Cod sursa(job #2240208)
| Utilizator | Data | 12 septembrie 2018 19:11:01 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 85 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <fstream>
#include <limits.h>
using namespace std;
int best[6000001], sum[6000001];
int n, i, x, minim, bestsum, c, d;
int main () {
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");
fin>>n;
sum[0]=0;
for (i=1;i<=n;i++) {
fin>>x;
sum[i]=x+sum[i-1];
}
minim=sum[0];
bestsum=INT_MIN;
for (i=1;i<=n;i++) {
best[i]=sum[i]-minim;
if (minim>sum[i]) {
minim=sum[i];
c=i;
}
if (bestsum<best[i]) {
bestsum=best[i];
d=i;
}
}
fout<<bestsum<<" "<<c+1<<" "<<d;
return 0;
}
