Pagini recente » Cod sursa (job #1496688) | Cod sursa (job #2392987) | Cod sursa (job #203334) | Cod sursa (job #769895) | Cod sursa (job #2065601)
#include <fstream>
#include <limits.h>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int v[200001],n,i,k,s,l,p,smax,l1,p1,maxi[200001],poz[200001];
int main()
{
f>>n;
smax=INT_MIN;
s=-1;maxi[0]=INT_MIN;
for(i=1;i<=n;i++)
{
f>>v[i]>>k;
if(k==0)
v[i]=-v[i];
//v[i+n]=v[i];
if(s>=0)
{
s+=v[i];
l++;
}
else
{
p=i;
s=v[i];
l=1;
}
if(smax<s)
{
smax=s;
p1=p;
l1=l;
}
if(s>maxi[i-1]){
maxi[i]=s;
poz[i]=i;
}
else
{
maxi[i]=maxi[i-1];
poz[i]=poz[i-1];
}
v[i]+=v[i-1];
}
for(i=1;i<=n;i++)
{
if(smax<v[n]-v[i-1]+maxi[i-1]){
smax=v[n]-v[i-1]+maxi[i-1];
p1=i;
l1=n-(i-poz[i-1]-1);
}
}
g<<smax<<" ";
if(p1<=n)
g<<p1<<" "<<l1;
else
g<<p1-n<<" "<<l1;
return 0;
}