Pagini recente » Cod sursa (job #2232149) | Cod sursa (job #383367) | Cod sursa (job #556380) | Cod sursa (job #1638244) | Cod sursa (job #1243280)
/*
ssm - O(n)
ssm = sp[i] - min(sp[j]) , j < i
*/
#include <iostream>
#include <fstream>
#define DN 6000005
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int v[DN],ii,jj,n;
int sp[DN],minim=0,rez,ind_ii;
void solve(){
f>>n;
ii = 1; /// The whole vector case
rez = -(1<<30);
for(int i=1;i<=n;++i){
f>>v[i];
sp[i] = sp[i-1] + v[i]; /// Construit sp
if(sp[i] - minim > rez){
rez = sp[i] - minim; /// Gasim maxi ssm
ind_ii = ii;
jj = i;
}
if( minim > sp[i]){
ii = i + 1;
minim = sp[i];
}
}
g<<rez<<" "<<ind_ii<<" "<<jj;
}
int main()
{
solve();
return 0;
}