Cod sursa(job #2172555)

Utilizator MattCMatei Coroiu MattC Data 15 martie 2018 16:56:27
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <climits>
#include <cstdio>
#define buff_size 400001

using namespace std;

char buff[buff_size];int pos=0, semn;
FILE*f=freopen("ssm.in","r",stdin);
FILE*g=freopen("ssm.out","w",stdout);
inline void read(int &nr){
    semn = 1;
    while(buff[pos] < '0' || buff[pos] > '9'){if(buff[pos]== '-' )semn = -1; if(++pos == 200000) fread(buff, 1, 200000, stdin), pos = 0;}
    nr = 0;
    while('0' <= buff[pos] && buff[pos] <= '9') {nr = nr * 10 + buff[pos] - '0';if(++pos == 200000) fread(buff, 1, 200000, stdin), pos = 0;}
    nr*=semn;
}

int maxim = INT_MIN;

int main()
{
    int s=0,n,i,x,f,poz1,poz2;
    read(n);
    for (i = 1; i <= n ; ++i)
    {
        read(x);
        if (s + x >= x)
        {
            s += x;
        }
        else s = x,f = i;
        if (s>maxim){
            maxim = s;
            poz1 = f;
            poz2 = i;
        }
    }
    printf("%d %d %d\n",maxim,poz1,poz2);
    return 0;
}