Cod sursa(job #767734)

Utilizator SteveStefan Eniceicu Steve Data 14 iulie 2012 16:41:53
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <iostream>

using namespace std;

long long N, mare = -20000, poz, lg = 1;
long long v[400005];

void Citire () {
    long long a;
    ifstream fin ("buline.in");
    fin >> N;
    for (long long i = 0; i < N; i++)
    {
        fin >> v[i] >> a;
        v[i] = (a ? v[i] : -v[i]);
        if (mare < v[i]) mare = v[i], poz = i;
    }
    fin.close ();
}

void Business () {
    for (long long i = 0; i < N; i++)
        v[i + N] = v[i];
    long long i, p, S;
    for (i = 0; i < N; i++)
        if (v[i] >= 0) break;
    if (i == N) return;
    S = v[i];
    p = i++;
    for (; i < p + N; i++)
    {
        S += v[i];
        if (S > mare)
        {
            mare = S;
            poz = p;
            lg = i - p + 1;
        }
        if (S < 0)
        {
            while (v[i] < 0)
            {
                i++;
                if (i >= N) return;
            }
            p = i;
            S = v[i];
        }
    }
}

void Scriere () {
    ofstream fout ("buline.out");
    fout << mare << " " << poz + 1 << " " << lg;
    fout.close ();
}

int main () {
    Citire ();
    Business ();
    Scriere ();
    return 0;
}