Pagini recente » Cod sursa (job #937952) | Cod sursa (job #1789792) | Cod sursa (job #1037212) | Cod sursa (job #2442303) | Cod sursa (job #3292819)
#include <fstream>
using namespace std;
ifstream cin ("buline.in");
ofstream cout ("buline.out");
int v[400001];
int main()
{
int n;
cin>>n;
int sum=0;
bool ok;
for (int i=1;i<=n;i++)
{
cin>>v[i]>>ok;
if (ok==0)
v[i]=v[i]*(-1);
sum+=v[i];
//v[i+n]=v[i];
}
int s1=v[1],i1=1,j1=1,max1=v[1],maxi=1,maxj=1;
for (int i=2;i<=n;i++)
{
//s=max(s+v[i],v[i]);
s1+=v[i];
j1=i;
if (s1<v[i])
{
s1=v[i];
i1=i;
j1=i;
}
if (s1>max1)
{
max1=s1;
maxi=i1;
maxj=j1;
}
}
//cout<<max1<<" "<<maxi<<" "<<maxj<<endl;
int s2=v[1],i2=1,j2=1,min1,mini=1,minj=1;
for (int i=2;i<=n;i++)
{
//s=min(s+v[i],v[i]);
s2+=v[i];
i2=i;
if (s2>v[i])
{
s2=v[i];
i2=i;
j2=i;
}
if (s2<min1)
{
min1=s2;
mini=i2;
minj=j2;
}
}
//cout<<min1<<" "<<mini<<" "<<minj;
if (max1>sum-min1)
{
cout<<max1<<" "<<maxi<<" "<<maxj-maxi+1;
}
else
{
cout<<sum-min1<<" "<<mini+1<<" "<<n-(minj-mini+1);
}
return 0;
}