Cod sursa(job #2199075)
Utilizator | Data | 26 aprilie 2018 17:06:32 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.66 kb |
#include <bits/stdc++.h>
#define neginf (1<<31)+1
#define NMAX 6000005
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int n, minim, j;
int maxSum, st, dr;
int V[NMAX], sol[NMAX];
void SumCalculate() {
maxSum=neginf;
for(int i=1; i<=n; ++i) {
V[i]+=V[i-1];
if(minim>V[i]) {
minim=V[i];
j=i;
}
if(maxSum<V[i]-minim) {
maxSum=V[i]-minim;
st=j+1;
dr=i;
}
}
}
int main()
{
fin>>n;
for(int i=1; i<=n; ++i)
fin>>V[i];
SumCalculate();
fout<<maxSum<<' '<<st<<' '<<dr;
return 0;
}