Pagini recente » Cod sursa (job #2276670) | Cod sursa (job #152568) | Monitorul de evaluare | Cod sursa (job #387766) | Cod sursa (job #1461846)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("buline.in");
ofstream out("buline.out");
int v[200001];
int main()
{
int ic,smax,im,sfm,i,smin,smax2,imin,sfmin,semn,sc,n,stot=0;
in>>n;
for(i=1;i<=n;i++){
in>>v[i]>>semn;
if(semn==0)
v[i] = v[i]*(-1);
stot+=v[i];
}
sc = smax = v[i];
ic = im = sfm = 1;
for(i=2;i<=n;i++){
if(sc+v[i]<v[i]){
ic = i;
sc = v[i];
}
else
sc +=v[i];
if(sc > smax){
smax = sc;
im = ic;
sfm = i;
}
}
sc = smin = v[i];
ic = imin = sfmin = 1;
for(i=2;i<=n;i++){
if(sc+v[i]>v[i]){
ic = i;
sc = v[i];
}
else
sc+=v[i];
if(sc<smin){
smin = sc;
imin = ic;
sfmin = i;
}
}
smax2 = stot - smin;
if(smax>smax2)
out<<smax<<" "<<im<<" "<<sfm-im+1;
else
out<<smax2<<" "<<(sfmin+1)%n<<" "<<n-(sfmin-imin+1);
return 0;
}