Pagini recente » Cod sursa (job #1449289) | Cod sursa (job #1287499) | Cod sursa (job #2336796) | Cod sursa (job #1575174) | Cod sursa (job #2167540)
#include <iostream>
#include <fstream>
#define Nmax 2*200005
#define oo 2000000000
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int N,m=-oo,mi,ml,x,y;
int dp[Nmax],L[Nmax];
int main()
{
fin>>N;
dp[0] = -oo;
for(int i=1;i<=N;i++){
fin>>x>>y;
dp[i] = dp[i+N] = x;
if(y==0){
dp[i] *=(-1);
dp[i+N] *= (-1);
}
L[i] = L[i+N] = 1;
}
for(int i=1;i<=2*N;++i){
if(L[i-1]<N){
if(dp[i]+dp[i-1]>dp[i]){
dp[i] +=dp[i-1];
L[i] = L[i-1]+1;
}
}
else{
if(dp[i]+dp[i-1]-dp[i-N]>dp[i]){
dp[i] = dp[i]+dp[i-1]-dp[i-N];
L[i] = N;
}
}
if(dp[i]>m){
m=dp[i];
mi=i;
ml = L[i];
}
}
if(mi-ml+1>N)
mi-=N;
fout<<m<<" "<<mi-ml+1<<" "<<ml<<"\n";
return 0;
}