QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#124929#6525. New Houseszyoobn#WA 108ms3472kbC++201.3kb2023-07-15 19:24:512023-07-15 19:24:56

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-15 19:24:56]
  • 评测
  • 测评结果:WA
  • 用时:108ms
  • 内存:3472kb
  • [2023-07-15 19:24:51]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

using i64 = long long;

void solve() {
	int n, m;
	cin >> n >> m;
	vector<array<i64, 2>> a(n);
	vector<i64> x, y;
	for (int i = 0; i < n; ++i) {
		cin >> a[i][0] >> a[i][1];
		if (a[i][0] >= a[i][1]) {
			x.push_back(i);
		} else {
			y.push_back(i);
		}
	}
	if (x.size() == 1) {
		y.push_back(x.back());
		x.pop_back();
	}
	i64 ans = 0;
	for (int i = 0; i < x.size(); ++i) {
		ans += a[x[i]][0];
	}
	m -= x.size();
	sort(y.begin(), y.end(), [&] (auto &x, auto &y) {
		return a[x][1] >= a[y][1];
	});
	vector<i64> pre(y), pr(y);
	pre.insert(pre.begin(), 0);
	pr.insert(pr.begin(), 0);
	for (int i = 1; i < pre.size(); ++i) {
		pre[i] = pre[i - 1] + a[pre[i]][1];
		pr[i] = pr[i - 1] + a[pr[i]][0];
	}
	i64 maxx = ans;
	for (int i = 0; i <= y.size(); ++i) {
		int j = m - 2 * i;
		if (x.empty()) {
			if (j >= (int)y.size() - i) {
				if (j >= 2) {
					maxx = max(maxx, ans + pre[i] + pr.back() - pr[i]);
				} else {
					maxx = max(maxx, ans + pre[i + 1]);					
				}
			}
		} else if (j >= (int)y.size() - i) {
			maxx = max(maxx, ans + pre[i] + pr.back() - pr[i]);
		}
	}
	cout << maxx << '\n';
}

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

    int t = 1;
    cin >> t;
    while(t--) {
        solve();
    }
    return 0;
}

详细

Test #1:

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

input:

3
4 5
1 100
100 1
100 1
100 1
2 2
1 10
1 10
2 3
100 50
1 1000

output:

400
2
1050

result:

ok 3 number(s): "400 2 1050"

Test #2:

score: -100
Wrong Answer
time: 108ms
memory: 3472kb

input:

100000
6 11
191141536 365120521
799679686 648574232
102602909 467685128
405440859 796808887
384858152 191995380
433392826 195648471
5 13
831367906 510447872
795639287 575551283
811207605 176441088
240156289 946977042
133416463 721098873
5 5
806744021 699586200
630510306 637827160
49223781 641709297
...

output:

3247545200
4106290713
2653993029
5122532137
5570513606
2072414809
2044500908
1885055191
6815058419
2237593918
6646615756
5638337819
3690874076
5497726904
5513905900
5404435094
4705403467
2411992217
3430587752
5098767681
3921151709
1303747744
2692878616
3833748807
2716183054
974485573
6464787173
8839...

result:

wrong answer 6th numbers differ - expected: '2031887824', found: '2072414809'