Pagini recente » Cod sursa (job #452611) | Cod sursa (job #2598023) | Cod sursa (job #3237811) | Cod sursa (job #1030523) | Cod sursa (job #3165495)
#include <fstream>
using namespace std;
int n, v[200010], sum, sign, sol, maximSir, L, poz, minimMid, sol1L, sol1P, sol2L, sol2P;
int main () {
ifstream fin ("buline.in");
ofstream fout("buline.out");
fin>>n;
for (int i=1;i<=n;i++){
fin>>v[i]>>sign;
if (!sign){
v[i]=-v[i];
}
sum+=v[i];
}
sol=maximSir=-2000000000;
L=0;
poz=1;
for (int i=1;i<=n;i++){
if (sol+v[i]>=v[i]){
sol=sol+v[i];
L++;
}
else{
sol=v[i];
poz=i;
L=1;
}
if (sol>maximSir){
maximSir=sol;
sol1L=L;
sol1P=poz;
}
}
sol=minimMid=2000000000;
L=0;
poz=1;
for (int i=1;i<=n;i++){
if (sol+v[i]<=v[i]){
sol=sol+v[i];
L++;
}
else{
sol=v[i];
poz=i;
L=1;
}
if (sol<minimMid){
minimMid=sol;
sol2L=L;
sol2P=poz;
}
}
if (maximSir>=sum-minimMid){
fout<<maximSir<<" "<<sol1P<<" "<<sol1L;
}
else{
fout<<sum-minimMid<<" "<<sol2P+sol2L<<" "<<n-sol2L;
}
return 0;
}