Cod sursa(job #1618793)

Utilizator petrooPetru G petroo Data 28 februarie 2016 00:06:57
Problema Secventa 2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX 50001

char *buffer;
int SUM[MAX];
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)
{
    /// CITIRE BUFFER///
    freopen("secv2.in","r",stdin);
    freopen("secv2.out","w",stdout);
    fseek(stdin,0,SEEK_END);
    int dimensiune = ftell(stdin);
    buffer = (char *) malloc(dimensiune);
    rewind(stdin);
    fread(buffer,dimensiune,1,stdin);
    /////////////////////////////////
    int n,distanta,inc,sf,inc_i,minim=0,maxim=-25001;
    read(n);
    read(distanta);

    for ( int i = 1; i <= n; ++i)
        read(SUM[i]);

    for (int i = 1; i <= n; ++i)
        SUM[i] += SUM[i-1];

    for (int i = distanta; i <= n; ++i)
    {
        if(SUM[i] - minim > maxim)
        {
            maxim = SUM[i] - minim;
            sf = i;
            inc = inc_i +1;
        }
        if(SUM[i-distanta] < minim)
        {
            minim = SUM[i-distanta];
            inc_i = i-distanta;
        }
    }
    printf("%d %d %d\n",inc,sf,maxim);
    return 0;
}