Cod sursa(job #767741)

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

using namespace std;

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

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

void Business () {
    for (int i = 0; i < N; i++)
        v[i + N] = v[i];
    int 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 < min (p + N, N + 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;
}