QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#544378#8242. V-Diagramenar#WA 79ms3948kbC++201.5kb2024-09-02 15:57:292024-09-02 15:57:30

Judging History

你现在查看的是最新测评结果

  • [2024-09-02 15:57:30]
  • 评测
  • 测评结果:WA
  • 用时:79ms
  • 内存:3948kb
  • [2024-09-02 15:57:29]
  • 提交

answer

#include <bits/stdc++.h>
using i64 = long long;

void solve() 
{
	int n;
	std::cin >> n;
	std::vector<int> a(n + 1);
	std::vector<int64_t> pre(n + 1);
	for(int i = 1; i <= n; ++i) 
	{
		std::cin >> a[i];
		pre[i] = pre[i - 1] + a[i];
	}
	int L = 1, R = n;
	auto findl = [&](int l) ->int {
		while(l + 1 <= R) {
			if(a[l] > a[l + 1]) break;
			l++;
		}
		return l;
	};
	auto findr = [&](int r) ->int {
		while(L <= r - 1) {
			if(a[r] > a[r - 1]) break;
			r--;
		}
		return r;
	};
	L = findl(L), R = findr(R);
	auto cmp = [&](int l, int r, int nl, int nr) ->bool {
		return __int128(pre[r] - pre[l - 1]) * __int128(nr - nl + 1) 
			<= __int128(pre[nr] - pre[nl - 1]) * __int128(r - l + 1);
	};
	while(true) {
		int l = findl(L + 1);
		if(R - l + 1 < 3) break;
		if(cmp(L, R, l, R)) {
			L = l;
		} else break;
	}
	while(true) {
		int r = findr(R - 1);
		if(r - L + 1 < 3) break;
		if(cmp(L, R, L, r)) {
			R = r;
		} else break;
	}
	int tl = L, tr = R, lstl = L, lstr = R;
	while(tl - 1 >= 1) {
		if(cmp(lstl, R, tl - 1, R)) {
			lstl = tl - 1;
		}
		tl--;
	}
	while(tr + 1 <= n) {
		if(cmp(L, lstr, L, tr + 1)) {
			lstr = tr + 1;
		}
		tr++;
	}
	L = lstl, R = lstr;
	std::cout << std::fixed << std::setprecision(15) << (long double)(pre[R] - pre[L - 1]) / (R - L + 1) << '\n';
}

int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

	int t;
	std::cin >> t;
	while(t--) solve();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3864kb

input:

2
4
8 2 7 10
6
9 6 5 3 4 8

output:

6.750000000000000
5.833333333333333

result:

ok 2 numbers

Test #2:

score: 0
Accepted
time: 79ms
memory: 3724kb

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

output:

833782882.666666666686069
435670789.666666666656965
770302316.666666666686069
608562705.000000000000000
296293261.666666666656965
319149416.333333333343035
571816312.666666666686069
223646002.333333333328483
39407315.666666666667879
383253737.666666666656965
734363638.666666666686069
779975824.33333...

result:

ok 100000 numbers

Test #3:

score: -100
Wrong Answer
time: 21ms
memory: 3948kb

input:

10000
4
194123849 79274911 191162487 570110764
86
957917218 915359202 914726017 873273226 867724859 867674150 809652204 805531383 745262007 743835491 727071232 714782071 645394643 639432679 594879540 587173904 583418126 560538589 518721836 469558994 427721766 411582333 404948350 402948978 357228675 ...

output:

258668002.750000000000000
499947495.383720930229174
495489050.352941176475724
511519421.863013698632130
472025965.700000000011642
543693608.250000000000000
543366581.516129032243043
254833443.199999999997090
395528440.974358974344796
502458665.384615384624340
564217787.333333333313931
479468115.1182...

result:

wrong answer 2nd numbers differ - expected: '527118856.7555556', found: '499947495.3837209', error = '0.0515469'