QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#614099#7964. 转化lymWA 132ms19684kbC++201.8kb2024-10-05 15:35:352024-10-05 15:35:35

Judging History

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

  • [2024-10-05 15:35:35]
  • 评测
  • 测评结果:WA
  • 用时:132ms
  • 内存:19684kb
  • [2024-10-05 15:35:35]
  • 提交

answer

#include<bits/stdc++.h>
using i64 = long long;
#define int i64
void solve() {
	int n;
	std::cin >> n;
	std::vector<std::array<int, 4> > a(n + 1);
	std::vector<int> e(n + 1);
	for (int i = 1; i <= n; i ++) {
		std::cin >> a[i][0];
	}
	for (int i = 1; i <= n; i ++) {
		std::cin >> a[i][1];
	}
	for (int i = 1; i <= n; i ++) {
		std::cin >> a[i][2];
		a[i][3] = i;
	}
	i64 sum = 0, res = 0;
	for (int i = 1; i <= n; i ++) {
		if (a[i][0] && a[i][1]) {
			e[a[i][3]] = 1;
			sum += a[i][0] + a[i][2];
			res += std::min(a[i][0] + a[i][2], a[i][1]);
		}
	}
	std::sort(a.begin() + 1, a.end(), [&](auto x, auto y) {
		return x[1] > y[1];
	});
	for (int i = 1; i <= n; i ++) {
		if (e[a[i][3]]) continue;
		if (! a[i][0]) {	
			if (! res) continue;
			res --;
			sum += a[i][2];
			res += std::min(a[i][2] + 1ll, a[i][1]);
		} else if (! a[i][1]) { // a[i]
			sum += a[i][0] + a[i][2];
		}
	}

	std::vector<int> d(n + 1);
	i64 op = 0;
	res = 0;
	for (int i = 1; i <= n; i ++) {
		if (a[i][0] && a[i][1]) {
			d[a[i][3]] = std::min(a[i][1], a[i][0] + a[i][2]);
			op += d[a[i][3]];
		}
	}
	for (int i = 1; i <= n; i ++) {
		if (e[a[i][3]]) continue;
		if (! a[i][0]) {
			if (! a[i][1]) continue;

			op --;
			d[a[i][3]] = std::min(a[i][2] + 1ll, a[i][1]) - 1;
			op += std::min(a[i][2] + 1ll, a[i][1]);
		} else if (! a[i][1]) { // a[i]
			d[a[i][3]] = 0;
			continue;
		}
	}
	std::sort(a.begin() + 1, a.end(), [&](auto x, auto y) {
		return x[3] < y[3];
	});
	for (int i = 1; i <= n; i ++) {
		//if (a[i][0])
		std::cout << a[i][0] + a[i][2] + op - d[i] << ' ';
		/*else 
		std::cout << a[i][2] + op - d[i] << ' '*/
	}
	std::cout << '\n';
	std::cout << sum << '\n';
}
signed main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);
	int t = 1;
	//std::cin >> t;
	while (t --) {
		solve();
	}
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 132ms
memory: 19684kb

input:

351493
0 37836791 46095966 46912389 21595941 0 3 86568894 3 0 0 0 0 39910208 0 2 4 86885825 1 67660833 0 24488082 52447896 0 67190942 70457491 11166998 90470470 11095822 0 0 5 47222930 2 49736354 0 0 0 77339472 0 5 3 0 25347727 0 3 2 0 48844622 0 65142757 1 73733079 80634668 46683173 0 31644647 9760...

output:

60073965049724 60073472376204 60073472376204 60073481727701 60073472376204 60073788737330 60073528128564 60073472376204 60073844358663 60073784179153 60073472376204 60073472376204 60073948665985 60073472376204 60073472376204 60073667185445 60073550333929 60073472376204 60073631548329 60073472376204 ...

result:

ok 2 lines

Test #2:

score: -100
Wrong Answer
time: 88ms
memory: 19572kb

input:

351493
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...

output:

389246793 773056414 285033292 35143062 150613 960166465 230310734 742299190 422307527 716629610 559282116 167517603 440667606 980062124 288964464 150613 37777273 995600801 890644898 919111990 697350089 651910449 818599875 248723392 345836780 145972754 169220149 798545767 375398590 724669763 34806631...

result:

wrong answer 2nd lines differ - expected: '115186454532787', found: '75281201207748'