QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#647293 | #8242. V-Diagram | Calculatelove# | TL | 1ms | 5968kb | C++14 | 1.1kb | 2024-10-17 13:14:42 | 2024-10-17 13:15:06 |
Judging History
answer
#include <bits/stdc++.h>
typedef long long s64;
const int N = 300100;
const double eps = 1e-11;
const s64 inf = 1e18;
int n;
int a[N];
double pre[N];
int p;
bool check(double mid) {
for (int i = 1; i <= n; i ++)
pre[i] = pre[i - 1] + a[i] - mid;
double maxx = -inf, minn = inf;
for (int i = 1; i < p; i ++)
minn = std::min(minn, pre[i - 1]);
for (int i = p + 1; i <= n; i ++)
maxx = std::max(maxx, pre[i]);
if (maxx - minn > 0)
return 1;
else
return 0;
}
void work() {
scanf("%d", &n);
for (int i = 1; i <= n; i ++)
scanf("%d", &a[i]);
for (int i = 2; i < n; i ++)
if (a[i - 1] > a[i] && a[i] < a[i + 1]) {
p = i;
break;
}
double l = 1, r = 1e9;
while (r - l > eps) {
double mid = (l + r) / 2;
if (check(mid)) l = mid; else r = mid;
}
printf("%.9lf\n", l);
}
int main() {
int T;
scanf("%d", &T);
while (T --)
work();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5968kb
input:
2 4 8 2 7 10 6 9 6 5 3 4 8
output:
6.750000000 5.833333333
result:
ok 2 numbers
Test #2:
score: -100
Time Limit Exceeded
input:
100000 3 948511478 739365502 813471668 3 881046825 27458122 398507422 3 987554257 399092415 924260278 3 984128569 125199021 716360525 3 529589236 45783262 313507287 3 645443456 85994112 226010681 3 914820717 228360911 572267310 3 418958362 56703604 195276041 3 64461646 26764720 26995581 3 914535039 ...