Cod sursa(job #53224)

Utilizator varuvasiTofan Vasile varuvasi Data 21 aprilie 2007 15:34:53
Problema Buline Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#define FOR(i, a, b) for (i = (a); i <= (b); i++)
#define MaxN 50033

int A[MaxN], N;

int sum, smin, s, sp, ep, lsol, spsol;

int main()
{
    int i, val, sgn;
    
    FILE *fin = fopen("buline.in", "rt");
    FILE *fout = fopen("buline.out", "wt");
    
    fscanf(fin, "%d", &N);
    FOR (i, 1, N)
    {
        fscanf(fin, "%d %d", &val, &sgn);
        if (!sgn) val *= -1;
        A[i] = val;
        sum += A[i];
    }
    
    smin = 100333, s = 0;
    
    FOR(i, 1, N)
    {
        s += A[i];
        if (s < smin)
        {
            smin = s;
            ep = i;
            spsol = sp;
        }

        if (s > 0)
        {
            s = 0;
            sp = i + 1;
        }
    }
    
    sp = spsol;
    if (ep == N) spsol = 1;
    else         spsol = ep + 1;
    
    lsol = (N - spsol + 1) + (sp - 1);
    
    fprintf(fout, "%d %d %d", sum - smin, spsol, lsol);
    fclose(fin);
    fclose(fout);
    
    return 0;    
}