Cod sursa(job #3166130)

Utilizator Robert_NicuNicu Robert Cristian Robert_Nicu Data 7 noiembrie 2023 19:06:01
Problema Buline Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>
#define DIM 200001
using namespace std;

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

struct elem{
    int minim;
    int maxim;
    int best;
}len, ans, bestlen, start;

int i, j;
int n, sign, sum, sumtotal;
int v[DIM];

int main(){
    fin>>n;
    for(i=1; i<=n; i++){
        fin>>v[i]>>sign;
        if(!sign)
            v[i]*=-1;
        sumtotal+=v[i];
    }
    for(i=1; i<=n; i++){
        if(sum<0){
            sum=0;
            len.maxim=0;
            start.maxim=i;
        }
        sum+=v[i];
        len.maxim++;
        if(ans.maxim<sum){
            ans.maxim=sum;
            bestlen.maxim=len.minim;
        }
    }
    sum=0;
    for(i=1; i<=n; i++){
        if(sum>=0){
            sum=0;
            len.minim=0;
            start.minim=i;
        }
        sum+=v[i];
        len.minim++;
        if(ans.minim>=sum){
            ans.minim=sum;
            bestlen.minim=len.minim;
        }
    }
    if(sumtotal-ans.minim>=ans.maxim){
        ans.best=sumtotal-ans.minim;
        start.best=start.minim+1;
        bestlen.best=n-bestlen.minim;
    }else{
        ans.best=ans.maxim;
        start.best=start.maxim;
        bestlen.best=bestlen.maxim;
    }
    fout<<ans.best<<" "<<start.best<<" "<<bestlen.best;
}