Pagini recente » Cod sursa (job #1402852) | Cod sursa (job #2234660) | Cod sursa (job #2065873) | Cod sursa (job #203505) | Cod sursa (job #2470816)
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int n,i,b,a,poz,pozm,mini,ok,lm,l,v[400002];
long long smax,sum,best[400002];
int main()
{
fin>>n;
mini=-10000;
for(i=1; i<=n; i++)
{
fin>>a>>b;
if(b==0)
{
v[i]=v[n+i]=-a;
}
else v[i]=v[n+i]=a,ok=1;
mini=max(v[i],mini);
sum+=v[i];
}
if(ok)
{
smax=v[1];
pozm=1;
n=2*n;
poz=1;
l=1;
best[1]=v[1];
for(i=1; i<=n; i++)
{
if(best[i-1]+v[i]>v[i])
{
best[i]=v[i];
l=1;
poz=i;
}
else
{
best[i]=v[i]+best[i-1];l++;
}
if(best[i]<smax)
{
smax=best[i];
pozm=poz;
lm=l;
}
else if(best[i]==smax)
{
if(poz>n/2)poz-=n/2;
if(pozm>poz)
{
pozm=poz;
lm=l;
}
else if(pozm==poz)
{
lm=min(l,lm);
}
}
}
pozm+=l;
if(pozm>n/2) pozm-=n/2;
smax=sum-smax;
fout<<smax<<" "<<pozm<<" "<<n/2-l;
}
else
{
for(i=1; i<=n; i++)
{
if(v[i]==mini)
{
fout<<mini<<" "<<i<<" "<<1;
}
}
}
return 0;
}