Pagini recente » Cod sursa (job #1926592) | Cod sursa (job #1316252) | Cod sursa (job #2136599) | Cod sursa (job #2245185) | Cod sursa (job #2734268)
#include <fstream>
using namespace std;
int v[200005];
int main()
{
ifstream fin("buline.in");
ofstream fout("buline.out");
int n,a;
long long stotal=0;
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>v[i]>>a;
if(a==0)
{
v[i]*=(-1);
}
stotal+=v[i];
}
long long smax=v[1],s=v[1],l=1,st,dr;
for(int i=2; i<=n; i++)
{
if(s+v[i]<=v[i])
{
s=v[i];
l=i;
}
else
{
s+=v[i];
}
if(s>smax)
{
smax=s;
st=l;
dr=i;
}
}
long long smin=v[1],s1=v[1],l1=1,st1,dr1;
for(int i=2; i<=n; i++)
{
if(s1+v[i]>=v[i])
{
s1=v[i];
l1=i;
}
else
{
s1+=v[i];
}
if(s1<smin)
{
smin=s1;
st1=l1;
dr1=i;
}
}
if(smax>stotal-smin)
{
fout<<smax<<" "<<st<<" "<<dr-st+1<<'\n';
}
else if(smax<stotal-smin)
{
fout<<stotal-smin<<" ";
if(dr1==n)
{
fout<<"1 ";
}
else
{
fout<<dr1+1<<" ";
}
fout<<n-(dr1-st1+1)<<'\n';
}
else if(smax==stotal-smin)
{
int k1=st,k2=dr1+1;
if(dr1==n)
{
k2=1;
}
if(k1<k2)
{
fout<<smax<<" "<<st<<" "<<dr-st+1<<'\n';
}
else if(k1>k2)
{
fout<<stotal-smin<<" ";
if(dr1==n)
{
fout<<"1 ";
}
else
{
fout<<dr1+1<<" ";
}
fout<<n-(dr1-st1+1)<<'\n';
}
else if(k1==k2)
{
int l1=dr-st+1,l2=n-(dr1-st1+1);
if(l1<l2)
{
fout<<smax<<" "<<st<<" "<<dr-st+1<<'\n';
}
else if(l1>l2)
{
fout<<stotal-smin<<" ";
if(dr1==n)
{
fout<<"1 ";
}
else
{
fout<<dr1+1<<" ";
}
fout<<n-(dr1-st1+1)<<'\n';
}
else
{
fout<<smax<<" "<<st<<" "<<dr-st+1<<'\n';
}
}
}
return 0;
}