Cod sursa(job #603769)

Utilizator vlad2901Vlad Berindei vlad2901 Data 18 iulie 2011 16:55:05
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct list
{
    short info;
    int poz;
} S[500003];

int n ,k;
char s[3000010];


int main()
{
    int x;
    int i, umax = 0, pmax = 0;
    long long sum = 0, max = - 9223372036854775800;
    list *nod, *aux;
    char *xs;
    int prim, ultim;

    freopen("secv2.in", "r", stdin);
    freopen("secv2.out", "w", stdout);

    scanf("%d %d", &n, &k);

    gets(s);
    gets(s);

    xs = strtok(s, " ");
    i = 1;

    ultim = 0;
    prim = 1;

    while(xs != NULL)
    {
        x = atoi(xs);

        if(ultim>=prim && i - S[prim].poz >= k && sum < 0)
        {
            sum -= S[prim].info;
            prim++;
        }

        ultim ++;
        S[ultim].info = x;
        S[ultim].poz = i;

        sum += S[ultim].info;

        if(i>=k && max < sum)
        {
            max = sum;
            umax = S[ultim].poz;
            pmax = S[prim].poz;        }

        xs = strtok(NULL, " ");
        i++;

    }

    printf("%d %d %lld", pmax, umax, max);

    return 0;
}