Cod sursa(job #651187)

Utilizator alexalbu95Albu Alexandru alexalbu95 Data 19 decembrie 2011 23:42:42
Problema Subsecventa de suma maxima Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <cstdio>
#include <cstring>
using namespace std;
ifstream f("ssm.in");
const int nmax=10000005;
int nr, semn, i, k, a[nmax], n;
int maxim=-nmax, pozi, pozf, sum;
char s[nmax];
int main()
{
    freopen("ssm.out", "w", stdout);
    f>>n; f.get();
    f.getline(s, nmax);
    semn=1;
    int x=strlen(s);
    for(i=0; i<=x; ++i)
    {
        if(s[i]=='-') semn=-1;
        if(s[i]>='0' && s[i]<='9') nr=nr*10+s[i]-'0';
        else if(s[i-1]>='0' && s[i-1]<='9')
             {
                 a[++k]=nr*semn;
                 nr=0;
                 semn=1;
             }
    }

    //for(i=1; i<=k; ++i) printf("%d ", a[i]);

    for(i=1; i<=k; ++i)
    {
        sum+=a[i];
        if(sum<0)
        {
            sum=a[i];
            pozi=i;
        }
        if(sum>maxim)
        {
            maxim=sum;
            pozf=i;

        }
    }
    printf("%d %d %d\n", maxim, pozi, pozf);
    return 0;
}