Pagini recente » Cod sursa (job #2850155) | Cod sursa (job #1371011) | Cod sursa (job #1371964) | Cod sursa (job #809881) | Cod sursa (job #2554063)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("buline.in");
ofstream fout ("buline.out");
const long long INF=(1<<32);
long long n, v[200100], x, suma, scrt, poz;
long long maxx=-INF, stM, drM;
long long minn= INF, stm, drm;
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];
}
for(int i=1; i<=n; i++){
if(scrt + v[i] >= v[i])
scrt+=v[i];
else{
scrt=v[i];
poz=i;
}
if(maxx < scrt){
maxx=scrt;
stM=poz;
drM=i;
}
}
poz=0;
scrt=0;
for(int i=1; i<=n; i++){
if(scrt+v[i] <= v[i])
scrt+=v[i];
else{
scrt=v[i];
poz=i;
}
if(minn > scrt){
minn=scrt;
stm=poz;
drm=i;
}
}
suma-=minn;
if(maxx > suma)
fout<<maxx<<" "<<stM<<" "<<drM-stM+1;
else
fout<<suma<<" "<<drm+1<<" "<<n-drm+stm-1;
return 0;
}