Pagini recente » Cod sursa (job #718197) | Cod sursa (job #3134166) | Cod sursa (job #3151192) | Cod sursa (job #1186533) | Cod sursa (job #2132504)
#include <fstream>
#include <climits>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int x,an,n,mini=0,maxim=INT_MIN,i,start,idx,sf,sum,r,k,tt,ok1,suma,ss,s,maxim1=INT_MIN,start1,sf1,lung;
int v[400001];
int main()
{
f>>n;
for (i=1;i<=n;i++)
{
f>>x>>an;
if (an==0)
{
v[i]=-x;
}
else
{
v[i]=x;
}
suma+=v[i];
}
for (i=1;i<=n;i++)
{
s+=v[i];
if (s-mini>maxim)
{
maxim=s;
start=idx+1;
sf=i;
}
if (mini>s)
{
idx=i;
mini=s;
}
}
for (i=1;i<=n;i++)
{
v[i]*=-1;
}
mini=0;
for (i=1;i<=n;i++)
{
ss+=v[i];
if (ss-mini>maxim1)
{
maxim1=ss-mini;
start1=idx+1;
sf1=i;
}
if (mini>ss)
{
idx=i;
mini=ss;
}
}
suma+=maxim1;
if (maxim<suma)
{
maxim=suma;
start=sf1+1;
sf=start1-1;
}
lung=sf-start+1;
if (lung<=0)
{
lung+=n;
}
g<<maxim<<" "<<start<<" "<<lung;
return 0;
}