Cod sursa(job #871847)

Utilizator andreas_mihAndreas Mihaloianis andreas_mih Data 5 februarie 2013 13:19:26
Problema Subsecventa de suma maxima Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<stdio.h>
#include<math.h>
using namespace std;
FILE*in=fopen("ssm.in","r");
FILE*out=fopen("ssm.out","w");

int nr,v[6000001],sum[6000001],greatSum,indiceA=1,indiceB;
int main()
{
    fscanf(in,"%d",&nr);
    fscanf(in,"%d",&v[1]);
    greatSum=v[1];
    sum[1]=v[1];
    for(int i=2;i<=nr;++i)
       {
           fscanf(in,"%d",&v[i]);
           sum[i]=v[i];
           if(sum[i]<sum[i-1]+v[i])
               sum[i]=sum[i-1]+v[i];
           if(greatSum<sum[i])
           {
               indiceB=i;
               greatSum=sum[i];
           }
       }
    fprintf(out,"%d ",greatSum);
    int ceva=v[indiceB];
    int j=indiceB;
    while(ceva!=greatSum)
    {
        ceva+=v[j-1];
        j--;
    }
    while(v[j])
        --j;
    indiceA=j;
    fprintf(out,"%d %d",indiceA,indiceB);
fclose(in);
fclose(out);
}