Cod sursa(job #1605471)

Utilizator petrooPetru G petroo Data 19 februarie 2016 01:01:33
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX 6000000
int X[MAX];
char *buffer;

void read   ( int &a)
{
    a ^= a;
    bool semn = 0;
    while ( *buffer < '0' || *buffer > '9')
        if (*(buffer++) == '-')
            semn = 1;
    while (*buffer >= '0' && *buffer <= '9')
        a = a * 10 + *(buffer++) - '0';

    if (semn)
        a *= -1;
}


int main(void)
{
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    fseek(stdin,0,SEEK_END);
    int dimensiune = ftell(stdin);
    buffer = (char *) (malloc(dimensiune));
    rewind(stdin);
    fread(buffer,1,dimensiune,stdin);
    int N,maxim = -9999,i,minim = 9999,min_i=0,secv_sf,secv_in;
    read(N);
    for ( i = 1 ; i <= N; ++i)
        read(X[i]);
    for ( i = 1 ; i <= N; ++i)
    {
        X[i] += X[i-1];

        if ( X[i] - minim >maxim)
        {
            maxim = X[i] - minim;
            secv_sf = i;
            secv_in = min_i+1;
        }

        if(minim > X[i])
        {
            minim = X[i];
            min_i = i;
        }

    }
    printf("%d %d %d\n",maxim,secv_in,secv_sf);


    return 0;
}