Cod sursa(job #1005116)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 4 octombrie 2013 11:44:51
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.72 kb
#include <fstream>
#include <stdio.h>
#define Nmax 6000099
#define NrCif 10
using namespace std;
int N,a[Nmax],start,finish;
long long S=-99999999999999;
char tmp[NrCif*Nmax+10];

void ReadInput()
{
    int n;
    freopen("ssm.in", "r", stdin);
	freopen("ssm.out", "w", stdout);

    scanf("%d\n",&N);  //return;
    fgets(tmp, 200000, stdin);
    char *p = tmp;
    int semn=1;if(tmp[0]=='-')semn=-1;
    for (int i=1; i<=N; i++)
    {
        int val = 0;
        for (; '0' <= *p && *p <= '9'; p++)
        {
            val = val * 10 + *p - '0';
        }
        a[i]=val*semn;
        semn=1;
        for (; '0' > *p || *p > '9'; p++)if(*p=='-')semn=-1;

        //printf("%d ",a[i]);
    }
}

void SSM(int N,int a[])
{
    long long sum=-1;
    int s=0;
    for(int i=1;i=2;i++)
    {
        if(sum<0)sum=a[i],s=i;
            else sum+=a[i];
        if(sum>S)
        {
            S=sum; start=s; finish=i;
        }
    }
}
/*
program sdas;
var x,n,sum,smax,si,s,i,sf:longint;
    f,g:text;
    intrare,iesire:array[1..1 shl 25] of char;
begin
assign(f,'ssm.in'); reset(f);    settextbuf(f,intrare);
assign(g,'ssm.out'); rewrite(g); settextbuf(g,iesire);
readln(f,n);
sum:=-1;
smax:=-1000000000;
for i:=1 to n do
  begin
  read(f,x);
  if(sum<0) then begin
                 sum:=x;
                 s:=i;
                 end
            else inc(sum,x);
  if(sum>smax)then begin
                   smax:=sum;
                   sf:=i;
                   si:=s;
                   end;
  end;
writeln(g,smax,' ',si,' ',sf);
close(f);close(g);
end.
*/
int main()
{
    ReadInput(); //printf("\n");
    SSM(N,a);
    printf("%lld %d %d\n",S,start,finish);
    return 0;
}