Pagini recente » Cod sursa (job #341843) | Cod sursa (job #2172314) | Cod sursa (job #2018342) | Cod sursa (job #95965) | Cod sursa (job #2022750)
#include <bits/stdc++.h>
using namespace std;
const int LIM = 250001;
long long CM[LIM];
long long sp[LIM], cst[LIM], cdr[LIM];
int v[LIM];
int main()
{
FILE *fi = fopen("cuburi2.in", "r"), *fo = fopen("cuburi2.out", "w");
int n, m, poz, x, y, i;
double poz_brut;
fscanf(fi, "%d%d", &n, &m);
long long cost;
for(i = 1; i <= n; i++){
fscanf(fi, "%d", &v[i]);
sp[i] = sp[i - 1] + v[i];
cst[i] = cst[i - 1] + v[i] * (i - 1);
CM[i] = CM[i - 1] + v[i] * i;
}
for(i = n - 1; i >= 1; i--)
cdr[i] = cdr[i + 1] + v[i] * (n - i);
for(m = m; m > 0; m--){
fscanf(fi, "%d%d", &x, &y);
poz_brut = (CM[y] - CM[x - 1]) * 1.0;
poz_brut = poz_brut / (sp[y] - sp[x - 1]);
poz = poz_brut + 0.5;
cost = cst[y] - cst[poz] - (sp[y] - sp[poz]) * (poz - 1) + cdr[x] - cdr[poz] - (sp[poz - 1] - sp[x - 1]) * (n - poz);
fprintf(fo, "%d %lld\n", poz, cost);
}
fclose(fi);
fclose(fo);
return 0;
}