Pagini recente » Cod sursa (job #2185254) | Cod sursa (job #326158) | Cod sursa (job #2199936) | Cod sursa (job #2185284) | Cod sursa (job #1038682)
#include <fstream>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
const int inf= 1<<30;
const int nmax= 200000;
int v[nmax+1];
int main( ) {
int n;
fin>>n;
int sum= 0;
for ( int i= 1; i<=n; ++i ) {
int x;
fin>>v[i]>>x;
if ( x==0 ) {
v[i]= -v[i];
}
sum+= v[i];
}
int s1= 0, s2= 0, st1= 0, st2= 0, p1= 0, p2= 0, l1= 0, l2= 0, max= -inf, min= inf;
for ( int i= 1; i<n; ++i ) {
if ( s1<0 ) {
s1= 0;
st1= i;
}
if ( s2>0 ) {
s2= 0;
st2= i;
}
s1+= v[i], s2+= v[i];
if ( s1>max ) {
max= s1;
p1= st1;
l1= i-st1+1;
}
if ( s2<min ) {
min= s2;
p2= st2;
l2= i-st2+1;
}
}
if ( min+max<sum ) {
fout<<sum-min<<" "<<p2+l2<<" "<<n-l2;
} else {
fout<<max<<" "<<p1<<" "<<l1;
}
fout<<"\n";
return 0;
}