Pagini recente » Cod sursa (job #2217421) | Cod sursa (job #1577016) | Cod sursa (job #1848676) | Cod sursa (job #1741122) | Cod sursa (job #2672223)
#include <fstream>
#include <climits>
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
int v[200005];
int main()
{
int n,sumaint=0,suma=INT_MIN,j1=1,j=1,poz1,poz2,poz3,poz4,i,sumaint1=0,suma1=INT_MIN,st=0,c,l;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>l>>c;
if(c==0)
v[i]=-1*l;
else
v[i]=l;
st=st+v[i];
}
for(i=1;i<=n;i++)
{
if(sumaint<0)
{
sumaint=v[i];
j=i;
}
else
sumaint+=v[i];
if(sumaint>suma)
{
suma=sumaint;
poz1=j;
poz2=i;
}
}
for(i=1;i<=n;i++)
v[i]=v[i]*(-1);
for(i=1;i<=n;i++)
{
if(sumaint1<0)
{
sumaint1=v[i];
j1=i;
}
else
sumaint1+=v[i];
if(sumaint1>suma1)
{
suma1=sumaint1;
poz3=j1;
poz4=i;
}
}
suma1=suma1*(-1);
if(suma>=st-suma1)
cout<<suma<<' '<<poz1<<' '<<poz2-poz1+1;
else
{
if(poz3==1)
cout<<st-suma1<<' '<<poz4+1<<' '<<n-poz4;
else
{
if(poz4==n)
cout<<st-suma1<<' '<<1<<' '<<n-poz3-1;
else
cout<<st-suma1<<' '<<poz4+1<<' '<<n-poz4+poz3-1;
}
}
return 0;
}