Submission details
Task:Keskiarvo
Sender:hltk
Submission time:2019-05-16 16:52:47 +0300
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED12
#2ACCEPTED17
#3ACCEPTED71
Test results
testverdicttimegroup
#1ACCEPTED0.03 s1details
#2ACCEPTED0.03 s1details
#3ACCEPTED0.02 s1details
#4ACCEPTED0.01 s1details
#5ACCEPTED0.02 s1details
#6ACCEPTED0.01 s2details
#7ACCEPTED0.03 s2details
#8ACCEPTED0.02 s2details
#9ACCEPTED0.02 s2details
#10ACCEPTED0.03 s2details
#11ACCEPTED0.04 s3details
#12ACCEPTED0.08 s3details
#13ACCEPTED0.08 s3details
#14ACCEPTED0.07 s3details
#15ACCEPTED0.07 s3details
#16ACCEPTED0.08 sdetails

Code

#include <bits/stdc++.h>
using namespace std;
#define N 100001
// sum_1 / amt_1 > sum_2 / amt_2
// sum_1 * amt_2 > sum_2 * amt_1
long ss[N];
long sum(int a, int b)
{
assert(a <= b);
assert(1 <= a);
return ss[b] - ss[a - 1];
}
int b[N];
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; ++i) {
int x;
cin >> x;
ss[i] = ss[i-1] + x;
}
for (int i = 1; i <= n; ++i) {
b[i] = 1;
for (;;) {
int c = i - b[i] + 1;
if (c == 1) break;
int j = c - 1 - b[c - 1] + 1;
long s1 = sum(j, i);
long s2 = sum(c, i);
s1 *= i - c + 1;
s2 *= i - j + 1;
if (s2 > s1) break;
b[i] = i - j + 1;
}
}
double res = 0;
for (int i = 1; i <= n; ++i) {
double s = sum(i - b[i] + 1, i);
res = max(res, s / ((double) b[i]));
}
printf("%.9f\n", res);
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
100
579911361 197658107 815676285 ...

correct output
980535539

user output
980535539.000000000

Test 2

Group: 1

Verdict: ACCEPTED

input
100
541962319 20721724 733683610 9...

correct output
996955791

user output
996955791.000000000

Test 3

Group: 1

Verdict: ACCEPTED

input
100
663677497 238679548 892011523 ...

correct output
978858928

user output
978858928.000000000

Test 4

Group: 1

Verdict: ACCEPTED

input
100
754557795 14395441 943833407 1...

correct output
998391974

user output
998391974.000000000

Test 5

Group: 1

Verdict: ACCEPTED

input
100
308690464 959776379 229201039 ...

correct output
995129158

user output
995129158.000000000

Test 6

Group: 2

Verdict: ACCEPTED

input
100
752236199 201329268 457625816 ...

correct output
997456488

user output
997456488.000000000

Test 7

Group: 2

Verdict: ACCEPTED

input
5000
314731332 844980432 427902587 ...

correct output
999901597

user output
999901597.000000000

Test 8

Group: 2

Verdict: ACCEPTED

input
5000
520967279 915660277 633907984 ...

correct output
999938928

user output
999938928.000000000

Test 9

Group: 2

Verdict: ACCEPTED

input
5000
989796225 185146611 419313583 ...

correct output
999908138

user output
999908138.000000000

Test 10

Group: 2

Verdict: ACCEPTED

input
5000
510588037 414748990 635670363 ...

correct output
999894105

user output
999894105.000000000

Test 11

Group: 3

Verdict: ACCEPTED

input
5000
312043025 563894859 350492609 ...

correct output
999944835

user output
999944835.000000000

Test 12

Group: 3

Verdict: ACCEPTED

input
100000
92541013 71039803 247766345 34...

correct output
999984487

user output
999984487.000000000

Test 13

Group: 3

Verdict: ACCEPTED

input
100000
423233870 652455282 139386372 ...

correct output
999994375

user output
999994375.000000000

Test 14

Group: 3

Verdict: ACCEPTED

input
100000
559308968 52061073 826304361 9...

correct output
999989944

user output
999989944.000000000

Test 15

Group: 3

Verdict: ACCEPTED

input
100000
425635648 182598452 773180708 ...

correct output
999996798

user output
999996798.000000000

Test 16

Group:

Verdict: ACCEPTED

input
100000
90120093 590318798 59894256 89...

correct output
999999674

user output
999999674.000000000