Pagini recente » Cod sursa (job #857202) | Cod sursa (job #222610) | Cod sursa (job #3193201) | Cod sursa (job #2167170) | Cod sursa (job #3218213)
#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;
}