Pagini recente » Cod sursa (job #2403348) | Cod sursa (job #1705955) | Cod sursa (job #2747940) | Cod sursa (job #702512) | Cod sursa (job #1979673)
#include<fstream>
using namespace std;
ifstream in("buline.in");
ofstream out("buline.out");
int v[200001],lmin[200001],lmax[200001],dmax[200001],dmin[200001],pozmax[200001],pozmin[200001];
int lunmax,lunmin,maxim,minim,alfamin,alfamax,ok,n,i,x;
long long s;
int main(){
in >> n;
for( i = 1; i <= n; i ++ ){
in >> v[i];
in >> x;
if( x == 0 ){
v[i] *= -1;
}
s+=v[i];
}
for( i = 1; i <= n; i ++ ){
if( dmax[i-1] <= 0 || i == 1 ){
dmax[i] = v[i];
pozmax[i] = i;
lmax[i] = 1;
}
else{
dmax[i] = dmax[i-1]+v[i];
pozmax[i] = pozmax[i-1];
lmax[i]=lmax[i-1]+1;
}
if( ok == 0 ){
maxim = dmax[i];
alfamax = pozmax[i];
lunmax = lmax[i];
ok = 1;
}
if( dmax[i] > maxim ){
maxim = dmax[i];
alfamax = pozmax[i];
lunmax = lmax[i];
}
else{
if( dmax[i] == maxim ){
if( pozmax[i] < alfamax ){
maxim = dmax[i];
alfamax = pozmax[i];
lunmax = lmax[i];
}
else{
if( pozmax[i] == alfamax ){
if( lmax[i] < lunmax ){
maxim = dmax[i];
alfamax = pozmax[i];
lunmax = lmax[i];
}
}
}
}
}
}
ok = 0;
for( i = 1; i <= n; i ++ ){
if( dmin[i-1] >= 0 || i == 1 ){
dmin[i] = v[i];
pozmin[i] = i;
lmin[i] = 1;
}
else{
dmin[i] = dmin[i-1]+v[i];
pozmin[i] = pozmin[i-1];
lmin[i]++;
}
if( ok == 0 ){
minim = dmin[i];
alfamin = pozmin[i];
lunmin = lmin[i];
ok = 1;
}
if( dmin[i] < minim ){
minim = dmin[i];
alfamin = pozmin[i];
lunmin = lmin[i];
}
else{
if( dmin[i] == minim ){
if( pozmin[i] < alfamin ){
minim = dmin[i];
alfamin = pozmin[i];
lunmin = lmin[i];
}
else{
if( pozmin[i] == alfamin ){
if( lmin[i] < lunmin ){
minim = dmin[i];
alfamin = pozmin[i];
lunmin = lmin[i];
}
}
}
}
}
}
if( maxim >= s - minim ){
out <<maxim<<" "<<alfamax<<" "<<lunmax;
}
else{
alfamin++;
if( alfamin != n ){
alfamin = alfamin % n +1;
}
out<<s-minim<<" "<<alfamin <<" "<<n-lunmin;
}
return 0;
}