Cod sursa(job #1925494)
Utilizator | Mihailescu Eduard-Florin mihailescu_eduard | Data | 13 martie 2017 11:55:30 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.68 kb |
#include <fstream>
#define NMax 6000001
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
// Date de intrare
int v[NMax],N;
int main()
{
fin >> N;
for(int i = 1; i<= N; i++){
fin >> v[i];
}
int last = 1, p1 = 1, p2 = 1, Smax = v[1], S = v[1];
if(S < 0){
S = 0;
last = 2;
}
for(int i = 2; i<= N; i++){
S+= v[i];
if(S < 0){
S = 0;
last = i + 1;
}
else if(S > Smax){
Smax = S;
p1 = last;
p2 = i;
}
}
fout << Smax << " " << p1 << " " << p2;
return 0;
}