Pagini recente » Cod sursa (job #710117) | Cod sursa (job #1859139) | Cod sursa (job #2977698) | Cod sursa (job #1764171) | Cod sursa (job #728321)
Cod sursa(job #728321)
#include <fstream>
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n,x;
int i;
int max=-1;
int begin,end;
int min=0;
int s_min=0;
int pos_min=0;
ifstream f("ssm.in");
f>>n;
int s=0;
for (i=1; i<=n; i++) {
f>>x;
s+=x;
//cout<<i<<' '<<x<<' '<<s<<' ';
if (s-s_min > max) {
max=s-s_min;
begin=pos_min+1;
end=i;
//cout<<" lowest : "<<s<<' '<<s_min<<' '<<begin<<' '<<end;
}
if (s<=s_min && x!=0) { min=x; s_min=s; pos_min=i; }
//cout<<'\n';
}
freopen("ssm.out","w",stdout);
printf("%d %d %d%c",max,begin,end,'\n');
return 0;
/* Too much usage of memory :
int a[6.000.000]
int s[6.000.000]
int poz[6.000.000] */
/*for (i=1; i<=n; i++) {
f>>a[i];
s[i]=s[i-1]+a[i];
}
f.close();
for (i=0; i<=n; i++)
cout<<s[i]<<' ';
for (i=1; i<=n; i++) {
if (a[i] < a[min]) min=i;
poz[i]=min;
}
for (i=1; i<=n; i++)
if (s[i]-s[poz[i]] > max) {
max=s[i]-s[poz[i]];
begin=poz[i]+1;
end=i;
}
*/
}