Pagini recente » Cod sursa (job #2001809) | Cod sursa (job #2297187) | Cod sursa (job #1563790) | Cod sursa (job #1684100) | Cod sursa (job #2746833)
#include <fstream>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
const int nmax = 2e5 + 5;
int n, v[nmax];
long long sum;
void read(){
fin >> n;
for(int i = 1; i <= n; i++){
int nr, sg;
fin >> nr >> sg;
if(!sg)
nr *= (-1);
v[i] = nr;
sum += v[i];
}
}
void solve(){
long long s1 = 0, smx = v[1];
int f1 = 1, l1 = 1, r1 = 1;
for(int i = 1; i <= n; i++){
if(s1 + v[i] < v[i]){
s1 = v[i];
f1 = i;
} else
s1 += v[i];
if(s1 > smx){
smx = s1;
l1 = f1;
r1 = i;
}
}
long long s2 = 0, smn = v[1];
int f2 = 1, l2 = 1, r2 = 1;
for(int i = 1; i <= n; i++){
if(s2 + v[i] >= v[i]){
s2 = v[i];
f2 = i;
} else
s2 += v[i];
if(s2 < smn){
smn = s2;
l2 = f2;
r2 = i;
}
}
if(sum - smn > smx)
fout << sum- smn << " " << r2 + 1 << " " << n - (r2 - l2 + 1);
else
fout << smx << " " << l1 << " " << r1 - l1 + 1;
}
int main()
{
read();
solve();
return 0;
}