Pagini recente » Cod sursa (job #3151231) | Cod sursa (job #365586) | Cod sursa (job #2261079) | Cod sursa (job #796739) | Cod sursa (job #1461821)
#include<fstream>
using namespace std;
ifstream in("buline.in");
ofstream out("buline.out");
int x[400001];
int main(){
int n,sc,ic,im,sfm,smax;
in>>n;
for(int i=1; i<=n; i++){
in>>x[i];
int k;
in>>k;
if(k==0) x[i]*=-1;
}
sc=smax=x[1];
ic=im=sfm=1;
for(int i=2; i<=n; i++){
if(sc+x[i]<x[i]){
sc=x[i];
ic=i;
}
else {
sc+=x[i];
}
if(sc>smax){
smax=sc;
im=ic;
sfm=i;
}
}
int smax2,imin,sfmin,smin;
sc=smin=x[1];
ic=imin=sfmin=1;
for(int i=2; i<=n; i++){
if(sc+x[i]>x[i]){
sc=x[i];
ic=i;
}
else {
sc+=x[i];
}
if(sc<smin){
smin=sc;
imin=ic;
sfmin=i;
}
}
int stot=0;
for(int i=1; i<=n; i++)
stot+=x[i];
smax2=stot-smin;
if(smax>smax2){
out<<smax<<" "<<im<<" "<<sfm-im+1;
}
else {
out<<smax2<<" "<<(sfmin+1)%n<<" "<<n-sfmin+imin-1;
}
in.close();
out.close();
return 0;
}