Cod sursa(job #3359837)

Utilizator Maya_PopaPopa Maya Diana Maya_Popa Data 5 iulie 2026 11:25:30
Problema Cuburi2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <vector>
#define MAX 250000

using namespace std;
ifstream fin ("cuburi2.in");
ofstream fout ("cuburi2.out");
int v[MAX],n;
vector<int> s1(n+1, 0);
vector<int> s2(n+1, 0);
void suma (int n) {
    for (int i=1; i<=n; i++) {
        s1[i]=s1[i-1]+v[i];
        s2[i]=s2[i-1]+v[i]*i;
    }
}
int suma1(int st, int dr) {
    if (st>dr) {
        return 0;
    }
    return s1[dr]-s1[st-1];
}
int suma2(int st, int dr) {
    if (st>dr) {
        return 0;
    }
    return s2[dr]-s2[st-1];
}
int cb (int x, int y) {
    int k=(suma1(x, y)+1)/2;
    int st=x, dr=y, poz=x;
    while (st<=dr) {
        int mij=(dr+st)/2;
        if (suma1(x, mij)>=k) {
            poz=mij;
            dr=mij-1;
        } else {
            st=mij+1;
        }
    }
    return poz;
}
int solve(int x, int y, int poz) {
    int st=poz*suma1(x, poz-1)-suma2(x, poz-1);
    int dr=suma2(poz+1, y)-poz*suma1(poz+1, y);
    return st+dr;
}
int main() {
    int m,i,x,y,poz,k;
    fin>>n>>m;
    for (i=1; i<=n; i++) {
        fin>>v[i];
    }
    suma(n);
    for (i=0; i<m; i++) {
        fin>>x>>y;
        poz=cb(x, y);
        k=solve(x, y, poz);
        fout<<poz<<" "<<k<<endl;
    }
    return 0;
}