Cod sursa(job #711573)

Utilizator impulseBagu Alexandru impulse Data 12 martie 2012 13:10:24
Problema Secventa 2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
/*
    Rezolvare la problma `Secventa 2` de Alexandru Bagu de 90 de puncte
*/

#include <stdio.h>
#include <iostream>
#define L 50001
using namespace std;
int n, k, a[L];
FILE *f=fopen("secv2.in", "r"),
     *g=fopen("secv2.out", "w");

int main()
{
    fscanf(f, "%d %d\n", &n, &k);
    for(int i =0; i <= n; i++)
        fscanf(f, "%d", &a[i]);

    int max = 0, st = 0, ln = 0, amax = -25001, ast = 0, aln = 0;
    bool set = false;
    for(int i = 0; i < n; i++)
    {
        if(max + a[i] >= 0)
        {
            set = true;
            max += a[i];
            ln++;
            if(max > amax && ln >= k)
            {
                amax = max;
                ast = st;
                aln = ln;
            }
        }
        else
        {
            max = 0;
            st = i + 1;
            ln = 0;
        }
    }
    if(!set)
    {
        int d = -25001;
        for(int i = 0; i < n; i++)
            if(a[i] > d)
                ast = i,
                    aln = 1,
                        amax = a[i];
    }
    fprintf(g, "%d %d %d", ast + 1, ast + aln, amax);
    fclose(f);
    fclose(g);
    return 0;
}