CSES - HIIT Open 2016 - Results
Submission details
Task:Approximate
Sender:LTR
Submission time:2016-05-28 11:53:59 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.26 sdetails

Code

#include <iostream>
#include <vector>
#include <cstdio>
int main()
{
int n, q;
std::cin >> n >> q;
std::vector<int> c;
c.reserve(n);
for (int i = 0; i < n; ++i) {
int x;
std::cin >> x;
c.push_back(x);
}
// ith is the sum of values before but not inc. i
std::vector<double> cumsums(n + 1);
std::vector<double> cumsumsq(n + 1);
cumsums[0] = 0.0;
cumsumsq[0] = 0.0;
for (int i = 1; i <= n; ++i) {
cumsums[i] = c[i-1] + cumsums[i-1];
cumsumsq[i] = c[i-1] * c[i-1] + cumsumsq[i-1];
}
for (int i = 0; i < q; ++i) {
int a, b;
std::cin >> a >> b;
a--;
b--;
double num = b - a + 1;
double mean = (cumsums[b+1] - cumsums[a]) / num;
double ms = (cumsumsq[b+1] - cumsumsq[a]) / num;
double err = ms - mean*mean;
printf("%.6f\n", err);
}
}

Test details

Test 1

Verdict: ACCEPTED

input
100000 100000
62 64 35 47 57 38 52 4 56 13 7...

correct output
831.753342
833.361649
833.847478
834.425131
831.468120
...

user output
831.753342
833.361649
833.847478
834.425131
831.468120
...