Pagini recente » Cod sursa (job #408489) | Cod sursa (job #960992) | Cod sursa (job #2208131) | Cod sursa (job #543880) | Cod sursa (job #3166141)
#include <bits/stdc++.h>
#define DIM 200001
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
struct elem{
long long minim=1e9;
long long maxim=-1e9;
long long best;
}len, ans, bestlen, start;
int i, j;
long long n, sign, sum, sumtotal;
int v[DIM];
int main(){
fin>>n;
for(i=1; i<=n; i++){
fin>>v[i]>>sign;
if(!sign)
v[i]*=-1;
sumtotal+=v[i];
}
for(i=1; i<=n; i++){
if(sum<0){
sum=0;
len.maxim=0;
start.maxim=i;
}
sum+=v[i];
len.maxim++;
if(ans.maxim<sum){
ans.maxim=sum;
bestlen.maxim=len.minim;
}
}
sum=0;
for(i=1; i<=n; i++){
if(sum>=0){
sum=0;
len.minim=0;
start.minim=i;
}
sum+=v[i];
len.minim++;
if(ans.minim>=sum){
ans.minim=sum;
bestlen.minim=len.minim;
}
}
if(sumtotal-ans.minim>=ans.maxim){
ans.best=sumtotal-ans.minim;
start.best=start.minim+1;
bestlen.best=n-bestlen.minim;
}else{
ans.best=ans.maxim;
start.best=start.maxim;
bestlen.best=bestlen.maxim;
}
fout<<ans.best<<" "<<start.best<<" "<<bestlen.best;
}