Cod sursa(job #2109050)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 19 ianuarie 2018 08:06:18
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#define INF 1e18
#define DIM 200002

using namespace std;

ifstream f("buline.in");
ofstream g("buline.out");

int n, p, nr, poz_max, nr_max, v[DIM], tip;

long long s, maxim = -INF;

int main()
{
    f>>n;
    for(int i = 1; i <= n; ++ i){
        f>>v[i]>>tip;
        if(!tip)
            v[i] = -v[i];
    }
    int s = 0;
    p = 1;
    nr = 1;
    s = v[1];
    maxim = s;
    nr_max = nr;
    poz_max = p;
    for(int i = 2; i <= n; ++ i){
        if(s < 0){
            s = v[i];
            p = i;
            nr = 1;
        }
        else{
            s += v[i];
            ++ nr;
        }
        if(s > maxim){
            maxim = s;
            poz_max = p;
            nr_max = nr;
        }
    }
    int i = 1;
    while(s > 0 && i < p){
        s += v[i];
        ++ nr;
        if(s > maxim){
            maxim = s;
            poz_max = p;
            nr_max = nr;
        }
        ++ i;
    }
    g<<maxim<<" "<<poz_max<<" "<<nr_max;
    return 0;
}