Cod sursa(job #1075672)
| Utilizator | Data | 9 ianuarie 2014 14:03:10 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 85 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.74 kb |
#include <cstdio>
#define Max_n 6000010
using namespace std;
int sum[Max_n], best[Max_n];
int main()
{
int n, i, x, p=0, r=0, Min=0, Max=-2000000000;
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
scanf("%d",&n); sum[0]=0;
for (i=1; i<=n; i++) {scanf("%d",&x); sum[i]=sum[i-1]+x;}
for (i=1; i<=n; i++)
{
best[i]=sum[i]-Min;
if (sum[i]<Min) {Min=sum[i]; p=i+1;}
if (best[i]>Max) {Max=best[i]; r=i;}
}
printf("%d %d %d",Max,p,r);
fclose(stdin);
fclose(stdout);
return 0;
}
