Pagini recente » Cod sursa (job #676056) | Cod sursa (job #302575) | Cod sursa (job #554175) | Cod sursa (job #2681057) | Cod sursa (job #531844)
Cod sursa(job #531844)
#include <fstream.h>
int N , nr , semn , ant , i , b , sum_max , inc , lun ,iMax , uMax , sum , sum_tot , max=-200000 , min=20000 , iMin , uMin , ant2 , c;
int main()
{
ifstream f("buline.in");
ofstream g("buline.out");
f>>N;
f>>nr>>semn;
ant=nr;ant2=nr;b=1;c=1;
if(semn==0){
ant=0-ant;
ant2=0-ant;
}
sum_tot=ant;
for(i=2;i<=N;i++){
f>>nr>>semn;
if(semn==0){
nr=-nr;
}
sum_tot+=nr;
if(ant+nr>=nr){
ant=ant+nr;
}
else{
ant=nr;
b=i;
}
if(ant>max){
max=ant;
uMax=i;
iMax=b;
}
if(ant2+nr<=nr){
ant2=ant2+nr;
}
else{
ant2=nr;
c=i;
}
if(ant2<min){
min=ant2;
uMin=i;
iMin=c;
}
}
if(sum_tot-min>max){
sum_max=sum_tot-min;
inc=uMin+1;
lun=N-uMin+iMin-1;
}
else if (sum_tot-min<max){
sum_max=max;
inc=iMax;
lun=uMax-iMax+1;
} else {
if (iMax > uMin+1) {
inc = uMin+1;
lun = uMax-iMax+1;
} else
if (iMax < uMin+1) {
inc=iMax;
lun=uMax-iMax+1;
} else {
if (N-uMin+iMin-1 < uMax-iMax+1)
lun = N-uMin+iMin-1;
else
lun = uMax-iMax+1;
}
}
g<<sum_max<<" "<<inc<<" "<<lun;
f.close();
g.close();
return 0;
}