Cod sursa(job #1979772)

Utilizator robx12lnLinca Robert robx12ln Data 11 mai 2017 13:08:55
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
long long smax, a, b, v[400005], sum, s;
int n, p, u, st, dr;
int main(){
    fin >> n;
    for( int i = 1; i <= n; i++ ){
        fin >> a >> b;
        v[i] = ( b == 0 ) ? a : -a;
        sum += (-v[i]);
    }
    for( int i = 1; i < n; i++ ){
        v[i + n] = v[i];
    }
    p = 1;
    u = 1;
    s = v[1];
    smax = v[1];
    for( int i = 2; i <= 2 * n - 1; i++ ){
        if( u - p + 1 == n ){
            s -= v[p];
            p++;
        }
        if( s < 0 ){
            s = v[i];
            p = i;
            u = i;
        }else{
            s += v[i];
            u++;
        }
        if( smax < s ){
            smax = s;
            st = p;
            dr = u;
        }
    }
    fout << sum + smax << " ";
    int L = n - ( dr - st + 1 );
    if( dr > n ){
        dr -= n;
    }
    dr++;
    if( dr > n ){
        dr -= n;
    }
    fout << dr << " " << L << "\n";
    return 0;
}