Pagini recente » Cod sursa (job #3333134) | Cod sursa (job #2103591) | Cod sursa (job #978196) | Cod sursa (job #3307285) | Cod sursa (job #3321137)
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int v[6000005];
int s[6000005];
int s_min[6000005];
int ind_s_min[6000005];
int main()
{
int n;
fin >> n;
for(int i=0;i<n;i++){
fin >> v[i];
if(i==0){
s[0]=v[0];
s_min[0]=v[0];
ind_s_min[0]=1;
}
else{
s[i]=s[i-1]+v[i];
if(s[i]<s_min[i-1])
ind_s_min[i]=i+1;
else
ind_s_min[i]=ind_s_min[i-1];
s_min[i]=min(s_min[i-1],s[i]);
}
}
int max_sum=v[0],ind1,ind2;
for(int i=1;i<n;i++){
if(max_sum<=s[i]-s_min[i-1]){
max_sum=max(max_sum,s[i]-s_min[i-1]);
ind1=ind_s_min[i-1]+1;
ind2=i+1;
}
}
fout << max_sum << " " << ind1 << " " << ind2;
return 0;
}