Cod sursa(job #3218213)

Utilizator raresmihai1234Rares Mihai raresmihai1234 Data 26 martie 2024 16:08:04
Problema Buline Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>

using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int n,ince1,incep1,sfar1,mx,v[200005],sum,i,x,y,ince,incep,sfar,t1,t2;
int main()
{fin>>n;
int sumanumerelor=0;
for (i=1;i<=n;i++)
{
    fin>>x>>y;
    if (y==1) v[i]=x;
    else v[i]=-x;
    sumanumerelor+=v[i];
}
mx=-99999;
for (i=1;i<=n;i++)
{x=v[i];
    if(sum<0) {sum=x;ince=i;}
    else sum+=x;
    if (sum>mx) {mx=sum;incep1=ince1;sfar1=i;}
    else if (sum==mx&&ince1<incep1) {mx=sum;incep1=ince1;sfar1=i;}
    else if (sum==mx&&ince1==incep1&&i-ince1<sfar1-incep1) {mx=sum;incep1=ince1;sfar1=i;}
}
t1=mx;
mx=0;
for (i=1;i<=n;i++)
{
    v[i]=v[i]*(-1);
}
mx=-99999;
sum=0;
for (i=1;i<=n;i++)
{x=v[i];
    if(sum<0) {sum=x;ince=i;}
    else sum+=x;
    if (sum>mx) {mx=sum;incep=ince;sfar=i;}
    else if (sum==mx&&ince>incep) {mx=sum;incep=ince;sfar=i;}
    else if (sum==mx&&ince==incep&&i-ince>sfar-incep) {mx=sum;incep=ince;sfar=i;}
}
//fout<<incep<<' '<<sfar;
t2=mx;
if (t1>sumanumerelor+t2) fout<<t1<<' '<<incep1<<' '<<sfar1-incep1+1;
else fout<<sumanumerelor+t2<<' '<<sfar+1<<' '<<(n-(sfar))+(incep-1);


    return 0;
}