Pagini recente » Cod sursa (job #318514) | Cod sursa (job #3039005) | Cod sursa (job #1135667) | Cod sursa (job #583758) | Cod sursa (job #1517993)
#include <fstream>
using namespace std;
int n,i,v[200001],s,minim,p,u,x,y,pmax,umax,s2,ap,ap2,maxi;
ifstream fin ("buline.in");
ofstream fout ("buline.out");
int main (){
fin>>n;
s2 = 0;
maxi = -2000000001;
for (i=1;i<=n;i++){
fin>>x>>y;
if (y == 0){
v[i] = -x;
ap2++;
if (v[i] > maxi){
maxi = v[i];
p = i;
}
}
else{
v[i] = x;
ap++;
}
s2 +=v[i];
}
if (ap2 == 0){
fout<<s2<<" "<<1<<" "<<n;
return 0;
}
if (ap == 0){
fout<<maxi<<" "<<p<<" "<<1;
return 0;
}
minim = 2000000001;
s = 0;
p = 1;
for (i=1;i<=n;i++){
if (s + v[i] <= v[i]){
s+=v[i];
}
else{
s = v[i];
p = i;
}
if (s < minim){
minim = s;
pmax = p;
umax = i;
}
}
if (pmax == 1){
for (i=n;i>=umax+1;i--){
if (s+v[i] <= v[i])
s+=v[i];
else{
s = v[i];
p = i;
}
if (s < minim){
minim = s;
pmax = p;
umax = i;
}
}
}
if (umax == n){
for (i=1;i<=pmax-1;i++){
if (s + v[i] <= v[i])
s+=v[i];
else{
s = v[i];
p = i;
}
if (s < minim){
minim = s;
pmax = p;
umax = i;
}
}
}
//fout<<s2<<" "<<minim<<" "<<pmax<<" ";
if (pmax <= umax)
fout<<s2-minim<<" "<<umax+1<<" "<<n-(umax-pmax+1);
else
fout<<s2-minim-1<<" "<<umax+1<<" "<<n-(pmax-umax-1);
return 0;
}