Pagini recente » Cod sursa (job #1041066) | Cod sursa (job #112092) | Istoria paginii runda/28_februarie_simulare_oji_2024_clasele_11_12/clasament | Cod sursa (job #2308270) | Cod sursa (job #1461588)
#include <fstream>
# include<algorithm>
using namespace std;
int x[200001];
struct prop
{
int s,p,l;
};
bool cmp (prop a,prop b)
{
return b.s<a.s;
}
int main()
{
ifstream fin("buline.in");
ofstream fout("buline.out");
int n,sc,ic,im,sfm,smax,i,inceput,h,j,a,b,k,cnt;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>a>>b;
if(b==0)
x[i]=-a;
if(b==1)
x[i]=a;
}
prop v[200001];
i=1;
while(i<=n)
{
k=i;
cnt=0;
sc=smax=x[i];
ic=im=sfm=k;
if(i==n)
{
for(h=1;h<=k-1;h++)
{
if(sc+x[h]<x[h])
{
sc=x[h];
ic=h;
}
else sc=sc+x[h];
if(sc>smax)
{
smax=sc;
im=ic;
sfm=h;
inceput=im;
}
}
}
else{
for(j=i+1;j<=n;j++)
{
if(j==n&& i!=2)
{
if(sc+x[j]<x[j])
{
sc=x[j];
ic=j;
}
else sc=sc+x[j];
if(sc>smax)
{
smax=sc;
im=ic;
sfm=j;
inceput=im;
}
for(h=1;h<=k-1;h++)
{
if(sc+x[h]<x[h])
{
sc=x[h];
ic=h;
}
else sc=sc+x[h];
if(sc>smax)
{
smax=sc;
im=ic;
sfm=h;
inceput=im;
}
}
}
else{
if(sc+x[j]<x[j])
{
sc=x[j];
ic=j;
}
else sc=sc+x[j];
if(sc>smax)
{
smax=sc;
im=ic;
sfm=j;
inceput=im;
cnt++;
}
}
}
}
v[i].s=smax;
v[i].p=im;
v[i].l=2*n-sfm-im;
if(im-sfm==1 || im-sfm==-1)
{
v[i].l=2*n-sfm-im+1;
}
i++;
}
sort(v+1,v+n+1,cmp);
for(i=2;i<=n;i++)
{
if(v[i].s==v[1].s)
{
if(v[i].p<=v[1].p)
{
fout<<v[i].s<<" "<<v[i].p<<" "<<v[i].l;
}
else
if(v[i].l<=v[1].l)
fout<<v[i].s<<" "<<v[i].p<<" "<<v[i].l;
else
fout<<v[i].s<<" "<<v[i].p<<" "<<v[i].l;
}
}
return 0;
}