Cod sursa(job #890764)

Utilizator paul.chPaul Chelarescu paul.ch Data 25 februarie 2013 11:45:17
Problema Subsecventa de suma maxima Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
//#include <iostream>
#include<fstream>
//#include<math.h>
//#include<string>
//#include<stack>
//#include<windows.h>
//#include<time.h>
//#include<queue>
using namespace std;
//long long ;
short n, a[6000000], best[6000000], sum[6000000], mini, bestSum, poz1, poz2;
//stack <int> ;
//string ;
//struct e
//{
//}
//queue <e>;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
inline void citire()
{
    fin >> n;
    for(int i = 1; i <= n; ++i)
    {
        fin >> a[i];
    }
}
inline void bordare()
{
}
inline void afisare()
{
}
int main()
{
    citire();
    sum[0] = 0;
    for (int i = 1; i <= n; i++) sum[i] = a[i] + sum[i-1];
    mini = sum[0];
    bestSum = -30000;
    for(int j = 2; j <= n; ++j)
    {
        best[j] = sum[j] - mini;
        if(mini > sum[j]) {mini = sum[j];poz1 = j + 1;}
        if(best[j] > bestSum) {bestSum = best[j]; poz2 = j;}
    }
    fout << bestSum << " "<< poz1 << " " << poz2;
    return 0;
}