Cod sursa(job #3368325)

Utilizator PortallosAlexandru Vladimir Portallos Data 14 octombrie 2026 11:19:54
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("buline.in");
ofstream fout("buline.out");

int n;
int a[200001];
int dp, dp1;
int startPos, curLen;
int Max = INT_MIN, startMax, lenMax;
int Min = INT_MAX, startMin, lenMin;
int sumTotal;

int main() {

    fin>>n;
    for(int i = 1; i <= n; i++){
        int x, b;
        fin>>x>>b;

        if(b)
            a[i] = x;
        else
            a[i] = -x;

        sumTotal += a[i];
    }

    startPos = 1, curLen = 1;

    for(int i = 1; i <= n ; i++){

        if(a[i] < dp1 + a[i]){
            dp = dp1 + a[i];
            curLen++;
        }
        else {
            dp = a[i];
            startPos = i;
            curLen = 1;
        }

        if(Max < dp){
            Max = dp;
            startMax = startPos;
            lenMax = curLen;
        }

        dp1 = dp;
    }

    dp = 0, dp1 = 0;

    for(int i = 1; i <= n ; i++){

        if(a[i] > dp1 + a[i]){
            dp = dp1 + a[i];
            curLen++;
        }
        else {
            dp = a[i];
            startPos = i;
            curLen = 1;
        }
        if(Min > dp){
            Min = dp;
            startMin = startPos;
            lenMin = curLen;
        }

        dp1 = dp;
    }


    if(Max >= sumTotal - Min)
        fout<<Max<<" "<<startMax<<" "<<lenMax;
    else
        fout<<sumTotal - Min<<" "<<startMin + lenMin<<" "<<n-lenMin;

    return 0;
}