Pagini recente » Cod sursa (job #399972) | Cod sursa (job #2890644) | Cod sursa (job #2942937) | Cod sursa (job #639303) | Cod sursa (job #254405)
Cod sursa(job #254405)
#include<stdio.h>
#define NMAX 5001
int A[NMAX],B[NMAX],S1[NMAX],S2[NMAX];
int V[NMAX];
int N,M;
char sir[ 1000000 ];
void reading()
{
scanf("%d%d\n",&N,&M);
fgets( sir, sizeof( sir ), stdin );
int i=1,j,aux=0;
for( j=0; sir[ j ]!='\n'; ++j )
{
if( sir[j]==' ' )
{
V[i]=aux;S1[i]=V[i]+S1[i-1];
aux=0;++i;
}
else
{
aux*=10;
aux+=(sir[j]-'0');
}
}
V[i]=aux;S1[i]=V[i]+S1[i-1];
/*
for(i=1; i<=N; ++i)
{
scanf("%d",&V[i]);
S1[i]=S1[i-1]+V[i];
}
for(i=N; i>=1; --i)
{
S2[i]=S2[i+1]+V[i];
}
*/
}
void init()//aveam un arbore de intervale in gand
{
int i,j;
for(i=1; i<=N; ++i,++j)
A[i]=A[i-1]+S1[i-1];
for(i=N; i>=1; --i)
B[i]=B[i+1]+S2[i+1];
/*
for(i=1; i<=N; ++i)
{
update()*/
}
void za_brute()//you have to hate them and love them
{
int ANS,POS;
int i,j;
int a1,a2;
while( M-- )
{
scanf("%d%d\n",&a1,&a2);
ANS=0x3f3f3f3f3f;POS=-1;
A[ a1-1 ]=0;S1[ a1-1 ]=0;
B[ a2+1 ]=0;S2[ a2+1 ]=0;
for( i=a1; i<=a2; ++i)
{
A[ i ]=A[ i-1 ]+S1[i-1];
S1[i]=S1[i-1]+V[i];
}
for( i=a2; i>=a1; --i)
{
B[ i ]=B[ i+1 ]+S2[i+1];
S2[i]=S2[i+1]+V[i];
if( A[i]+B[i]<ANS )
{
ANS=A[i]+B[i];
POS=i;
}
}
printf("%d %d\n",POS,ANS);
}
}
int main()
{
freopen("cuburi2.in","r",stdin);
freopen("cuburi2.out","w",stdout);
reading();
//init();
za_brute();
return 0;
}