Pagini recente » Cod sursa (job #2834677) | Cod sursa (job #137671) | Cod sursa (job #2320723) | Cod sursa (job #1311428) | Cod sursa (job #2636873)
#include <fstream>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
long long n,x,y,Max,s,k,p,u,a[50001],b[50001];
int main()
{
f>>n;
for(int i=1; i<=n; i++)
{
f>>x>>y;
if(y==0)x=-x;
a[i]=a[i-1]+x;
a[i+n]=x;
}
for(int i=n+1; i<=2*n; i++)
{
a[i]=a[i]+a[i-1];
}
p=1;
b[++u]=0;
for(int i=1; i<=n*2; i++)
{
while(p<=u && a[i]<a[b[u]])
{
u--;
}
b[++u]=i;
if(i-b[p]-1==n)
{
p++;
}
if(a[i]-a[b[p]]>Max)
{
Max=a[i]-a[b[p]];
s=b[p];
k=i-s;
}
}
g<<Max<<" "<<s+1<<" "<<k<<'\n';
return 0;
}