Cod sursa(job #1124750)
Utilizator | Visan Radu visanr | Data | 26 februarie 2014 13:37:09 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.53 kb |
#include <cstdio>
using namespace std;
const int INF = 0x3f3f3f3f;
int N, X, CrtS, MinS, IndexMinS, Ans = -INF, AnsLeft, AnsRight;
int main()
{
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
scanf("%i", &N);
for(int i = 1; i <= N; ++ i)
{
scanf("%i", &X);
CrtS += X;
if(CrtS - MinS > Ans) Ans = CrtS - MinS, AnsLeft = IndexMinS + 1, AnsRight = i;
if(CrtS < MinS) MinS = CrtS, IndexMinS = i;
}
printf("%i %i %i\n", Ans, AnsLeft, AnsRight);
}