Pagini recente » Cod sursa (job #2879858) | Cod sursa (job #2458424) | Cod sursa (job #1166847) | Cod sursa (job #115562) | Cod sursa (job #254591)
Cod sursa(job #254591)
#include<stdio.h>
long n,m,h[250001];
long long v[250001],w[250001];
FILE *g;
void solve (long x, long y)
{
long cub,i,j;
long long min;
v[x]=h[x];
for (i=x+1;i<=y-1;++i)
for (j=x;j<=i;++j)
v[i]+=h[j]*(i-j+1);
for (i=y-1;i>=x;--i)
for (j=y;j>=i+1;--j)
w[i]+=h[j]*(j-i);
min=w[x];
cub=x;
for (i=x+1;i<=y-1;++i)
if (v[i-1]+w[i]<min)
{
min=v[i-1]+w[i];
cub=i;
}
if (v[y-1]<min)
{
min=v[y-1];
cub=y;
}
fprintf(g,"%ld %lld\n",cub,min);
}
void read ()
{
FILE *f=fopen("cuburi2.in","r");
fscanf(f,"%ld%ld",&n,&m);
long x,y,i,j;
for (i=1;i<=n;++i)
fscanf(f,"%ld",&h[i]);
for (i=1;i<=m;++i)
{
fscanf(f,"%ld%ld",&x,&y);
for (j=1;j<=n;++j)
{
v[j]=0;
w[j]=0;
}
solve (x,y);
}
fclose(f);
fclose(g);
}
int main ()
{
g=fopen("cuburi2.out","w");
read ();
return 0;
}