Pagini recente » Cod sursa (job #149644) | Cod sursa (job #1360338) | Cod sursa (job #1525452) | Cod sursa (job #2378341) | Cod sursa (job #254377)
Cod sursa(job #254377)
#include<stdio.h>
#define N 250010
int n,m;
int v[N];
long long s[N],ajt[N];
char c[9*N];
inline void citescv()
{
fgets(c,9*N,stdin);
int cate=0,aux=0;
for(int i=0; c[i]!='\0'; ++i)
{
if(c[i]>='0' && c[i]<='9')
aux=aux*10+c[i]-'0';
else
{
v[++cate]=aux;
aux=0;
}
}
if(cate<n)
v[++cate]=aux;
}
inline void citire()
{
scanf("%d%d\n",&n,&m);
citescv();
}
inline void precalc()
{
for(int i=1; i<=n; ++i)
{
long long aux=(long long)v[i];
s[i]=s[i-1]+aux;
ajt[i]=ajt[i-1]+s[i-1];
}
}
inline void rezolva()
{
char c[30];
fgets(c,30,stdin);
int x=0,y=0,i=0;
for(i=0; c[i]>='0' && c[i]<='9'; ++i)
x=x*10+c[i]-'0';
for(++i; c[i]>='0' && c[i]<='9'; ++i)
y=y*10+c[i]-'0';
int p=y;
long long cost;
long long aux=(long long)(y-x);
cost=ajt[y]-ajt[x]-aux*s[x-1];
long long cost1=cost;
long long aux1=s[x-1]+s[y];
for(int i=y-1; i>=x; --i)
{
cost1=cost1-(s[i]<<1)+aux1;
if(cost1<cost)
{
p=i;
cost=cost1;
}
}
printf("%d %lld\n",p,cost);
}
int main()
{
freopen("cuburi2.in","r",stdin);
freopen("cuburi2.out","w",stdout);
citire();
precalc();
for(; m; --m)
rezolva();
return 0;
}