Cod sursa(job #2282626)

Utilizator tgm000Tudor Mocioi tgm000 Data 14 noiembrie 2018 10:36:24
Problema Cuburi2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>
long long v[250001];
long long kv[250001];
long long suma(int a,int b,int p){
    long long s1=p*(v[p-1]-v[a-1])-(kv[p-1]-kv[a-1]);
    long long s2=(kv[b]-kv[p])-p*(v[b]-v[p]);
    return s1+s2;
}
int main(){
    int n,m,i,k,x,y,p;
    long long s1,s2;
    freopen("cuburi2.in","r",stdin);
    freopen("cuburi2.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(k=1;k<=n;k++){
        scanf("%lld",&v[k]);
        kv[k]=k*v[k];
        v[k]+=v[k-1];
        kv[k]+=kv[k-1];
    }
    for(i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        p=(kv[y]-kv[x-1])/(v[y]-v[x-1]);
        s1=suma(x,y,p);s2=suma(x,y,p+1);
        if(s1<s2)
            printf("%d %lld\n",p,s1);
        else
            printf("%d %lld\n",p+1,s2);
    }
    return 0;
}