Pagini recente » Cod sursa (job #1996134) | Cod sursa (job #1565349) | Cod sursa (job #353917) | Cod sursa (job #2380589) | Cod sursa (job #1979772)
#include<fstream>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
long long smax, a, b, v[400005], sum, s;
int n, p, u, st, dr;
int main(){
fin >> n;
for( int i = 1; i <= n; i++ ){
fin >> a >> b;
v[i] = ( b == 0 ) ? a : -a;
sum += (-v[i]);
}
for( int i = 1; i < n; i++ ){
v[i + n] = v[i];
}
p = 1;
u = 1;
s = v[1];
smax = v[1];
for( int i = 2; i <= 2 * n - 1; i++ ){
if( u - p + 1 == n ){
s -= v[p];
p++;
}
if( s < 0 ){
s = v[i];
p = i;
u = i;
}else{
s += v[i];
u++;
}
if( smax < s ){
smax = s;
st = p;
dr = u;
}
}
fout << sum + smax << " ";
int L = n - ( dr - st + 1 );
if( dr > n ){
dr -= n;
}
dr++;
if( dr > n ){
dr -= n;
}
fout << dr << " " << L << "\n";
return 0;
}