Cod sursa(job #2192594)
| Utilizator | Data | 6 aprilie 2018 17:20:23 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <fstream>
#define NMax 6000001
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int N, i, Smax, S, st, dr, stmax, drmax;
long long int V[NMax];
int main()
{
fin >> N;
for (i = 0; i < N; i++)fin >> V[i];
Smax = S = V[0];
st = dr = 0;
for (i = 1; i < N; i++) {
if (S + V[i] > 0) {
S += V[i];
dr++;
}
else {
i = st + 1;
st = dr = i;
S = V[i];
}
if (S > Smax) {
Smax = S;
stmax = st;
drmax = dr;
}
}
fout << Smax << " " << stmax+1 << " " << drmax+1;
return 0;
}
