Pagini recente » Cod sursa (job #1878932) | Cod sursa (job #3165554) | Cod sursa (job #1493541) | Cod sursa (job #1383283) | Cod sursa (job #51449)
Cod sursa(job #51449)
#include <stdio.h>
#define in "buline.in"
#define out "buline.out"
#define dim 200001
int A[2*dim], best[2*dim], Nr[2*dim], part[2*dim];
int N;
int main()
{
int a, b;
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d", &N);
for ( int i = 1; i <= N; i++ )
{
scanf("%d%d", &a, &b);
if ( b == 1 ) A[i] = a, A[N+i] = a;
else A[i] = -a, A[N+i] = -a;
}
best[1] = A[1];
Nr[1] = 1;
for ( int i = 2; i <= 2*N; i++ )
{
best[i] = A[i];
Nr[i] = i;
if ( best[i] < A[i] + best[i-1] && i - Nr[i-1] < N ) best[i] = A[i] + best[i-1], Nr[i] = Nr[i-1];
}
int maxim = -1000000;
int p;
for ( int i = 1; i <= 2*N; i++ )
{
// printf("%d ", A[i]);
if ( maxim < best[i] ) maxim = best[i], p = i;
}
printf("%d %d %d", maxim, p-Nr[p], Nr[p] );
}