Pagini recente » Cod sursa (job #2503952) | Cod sursa (job #1370945) | Cod sursa (job #1344219) | Cod sursa (job #1371941) | Cod sursa (job #2548548)
#include <iostream>
#include <fstream>
#define INF 999999999
using namespace std;
ifstream fin ("buline.in");
ofstream fout ("buline.out");
int n, v[200005], x;
int suma, scrt, pcrt, poz;
int maxx=-INF, smax, dmax;
int minn= INF, smin, dmin;
int main (){
fin>>n;
for(int i=1; i<=n; i++){
fin>>v[i]>>x;
if(x == 0)
v[i]=-v[i];
suma+=v[i];
}
scrt=v[1];
pcrt=1;
for(int i=2; i<=n; i++){
if(scrt + v[i] >= v[i])
scrt+=v[i];
else{
scrt=v[i];
pcrt=i;
}
if(maxx < scrt){
maxx=scrt;
smax=poz;
dmax=i;
}
}
scrt=v[1];
pcrt=1;
for(int i=2; i<=n; i++){
if(scrt + v[i] <= v[i])
scrt+=v[i];
else{
scrt=v[i];
poz=i;
}
if(scrt < minn){
minn=scrt;
smin=poz;
dmin=i;
}
}
if(maxx > suma - minn)
fout<<maxx<<" "<<smax<<" "<<dmax-smax+1;
else
fout<<suma-minn<<" "<<dmin+1<<" "<<n-dmin+smin-1;
return 0;
}