Pagini recente » Cod sursa (job #1580119) | Cod sursa (job #3223530) | Cod sursa (job #1361858) | Cod sursa (job #1844812) | Cod sursa (job #1255499)
#include<fstream>
using namespace std;
int n, i, maxim, sum, minim, p, u, ii, s, p1, u1, P, U, x, y, d;
int v[200001];
ifstream fin("buline.in");
ofstream fout("buline.out");
int main(){
fin>> n;
for(i = 1; i <= n; i++){
fin>> x >> y;
if(y == 1){
v[i] = x;
}
else{
v[i] = -x;
}
s += v[i];
}
sum = v[1];
maxim = v[1];
p = 1;
u = 1;
ii = 1;
for(i = 2; i <= n; i++){
sum += v[i];
if(sum < v[i]){
sum = v[i];
ii = i;
}
if(sum > maxim){
maxim = sum;
p = ii;
u = i;
}
}
sum = v[1];
minim = v[1];
p1 = 1;
u1 = 1;
for(i = 2; i <= n; i++){
sum += v[i];
if(v[i] < sum){
ii = i;
sum = v[i];
}
if(sum < minim){
minim = sum;
p1 = ii;
u1 = i;
}
}
s -= minim;
P = u1 + 1;
U = p1 - 1;
d = U + n - P + 1;
if(maxim > s){
fout<< maxim <<" "<< p <<" "<< u - p + 1;
}
else{
if(s > maxim){
fout<< s <<" "<< P <<" "<< d;
}
else{
if(p < P){
fout<< maxim <<" "<< p <<" "<< u - p + 1;
}
else{
if(P < p){
fout<< s <<" "<< P <<" "<< d;
}
else{
if(u - p + 1 < d){
fout<< maxim <<" "<< p <<" "<< u - p + 1;
}
else{
fout<< s <<" "<< P <<" "<< d;
}
}
}
}
}
return 0;
}