CSES - HIIT Open 2016 - Results
Submission details
Task:Approximate
Sender:Verto
Submission time:2016-05-28 14:42:01 +0300
Language:Python2
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.60 sdetails

Code

import sys

lines = sys.stdin.readlines()

def asints(s):
	return [int(x.strip()) for x in s.split()]

n, q = asints(lines[0])
sequence = asints(lines[1])

sums = [sequence[0]]
sums2 = [sequence[0]**2]
for i in range(1,len(sequence)):
	val = sequence[i]
	sums.append(sums[i-1] + val)
	sums2.append(sums2[i-1] + val*val)
def ex(a,b):
	if a == 1:
		return sums[b-1] / (b-a+1.0)
	return (sums[b-1] - sums[a-2]) / (b-a+1.0)

def ex2(a,b):
	if a == 1:
		return sums2[b-1] / (b-a+1.0)
	return (sums2[b-1] - sums2[a-2]) / (b-a+1.0)

for i in range(2, q + 2):
	low, high = asints(lines[i])
	var = ex2(low,high) - ex(low,high)**2
	#subs = sequence[low-1:high]
	#avg = sum(subs) *1.0 / len(subs)
	#errs = [(x*1.0-avg)**2 for x in subs]
	print "%.6f" % var#sum(errs) / len(errs)
	

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
...