Cod sursa(job #3328726)

Utilizator _.stefan77Stefan Paici _.stefan77 Data 9 decembrie 2025 22:20:21
Problema Cuburi2 Scor 67
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;
ifstream fin ("cuburi2.in");
ofstream fout ("cuburi2.out");
long long s1[250005], s2[250005];
int v[250005];
int t_search (long long x, int l, int r) {
    int le = l, ri = r;
    int ret = 0;
    while (le <= ri) {
        int mid = (le + ri) / 2;
        if (s1[mid] - s1[l-1] >= x) {
            ret = mid;
            ri = mid-1;
        }
        else {
            le = mid + 1;
        }
    }
    return ret;
}
int main () {
    int n,m,r,l,i;
    fin>>n>>m;
    for (i = 1; i <= n; i++) {
        fin>> v[i];
        s1[i] = v[i] + s1[i-1];
        s2[i] = v[i]*i + s2[i-1];
    }
    for (i = 1; i <= m; i++) {
        fin>>l>>r;
        long long  x = (s1[r]-s1[l-1]+1)/2 ;
        int nr = t_search(x,l,r);
        long long cost = nr * (s1[nr] - s1[l-1]) - (s2[nr] - s2[l-1]) + (s2[r] - s2[nr]) - nr * (s1[r]- s1[nr]);
        fout<<nr<<" "<<cost<<"\n";
    }
}