Cod sursa(job #850242)

Utilizator danutbodbodnariuc danut danutbod Data 8 ianuarie 2013 10:13:05
Problema Subsecventa de suma maxima Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include<string.h>
#define NMax 6000003
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
long long n,i,j,x,semn,maxi,pmaxi,ss,a[NMax],sum[NMax];
char  s[NMax+3];
int main()
{
    f>>n;
    for (i=1; i<=n; i++)f>>a[i];
//    f.get();
//    f.get(s,NMax+3);strcat(s," ");
//    x=0;semn=1;
//    for(i=0; i<n; i++)
//      if(s[i]=='-')semn=-1;
//        else if(s[i]>='0'&&s[i]<='9')x=x*10+s[i]-'0';
//              else {a[++j]=semn*x;x=0;semn=1;}
    for (i=1; i<=n; i++)
     if(sum[i-1]>0)sum[i]=sum[i-1]+a[i];
        else sum[i]=a[i];
    maxi=-1000000000000LL;
    for (i=1; i<=n; i++)
      if(maxi<sum[i]){maxi=sum[i];pmaxi=i;}
    for(i=pmaxi; i>=1; i--){
          ss+=a[i];
          if(ss==maxi)break;
    }
    g<<maxi<<" "<<i<<" "<<pmaxi<<'\n';
    return 0;
}