Cod sursa(job #1404526)
Utilizator | Data | 28 martie 2015 12:28:25 | |
---|---|---|---|
Problema | Buline | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.84 kb |
#include<cstdio>
using namespace std;
long long v[400005];
int main()
{
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
int n,i,j,x,y,poz=300000,lmin=300000;
scanf("%d",&n);
long long max;
max=((-1)*10000)*200000;
for(i=1;i<=n;++i)
{
scanf("%d%d",&x,&y);
if(y==0)
x*=(-1);
v[i]=v[i-1]+1LL*x;
}
for(i=n+1;i<2*n;++i)
{
v[i]=v[n]+v[i-n];
}
for(i=1;i<=n;++i)
{
for(j=0;j<i;++j)
{
if(v[i]-v[j]>max)
{
max=v[i]-v[j];
poz=j+1;
lmin=i-j;
}
else
{
if(v[i]-v[j]==max)
{
if(j+1<poz)
poz=j+1;
else
{
if(j+1==poz)
{
if(i-j<lmin)
lmin=i-j;
}
}
}
}
}
}
for(i=n+1;i<2*n;++i)
{
for(j=i-n;j<n;++j)
{
if(v[i]-v[j]>max)
{
max=v[i]-v[j];
poz=j+1;
lmin=i-j;
}
else
{
if(v[i]-v[j]==max)
{
if(j+1<poz)
poz=j+1;
else
{
if(j+1==poz)
{
if(i-j<lmin)
lmin=i-j;
}
}
}
}
}
}
printf("%lld ",max);
printf("%d %d\n",poz,lmin);
return 0;
}