147762025-02-02 12:01:57KateTaylorBányász RPG (40 pont)cpp17Wrong answer 3/4068ms1976 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n;
	cin >> n;
	vector<pair<int, int>> data(n);
	for (int i = 0; i < n; i++) cin >> data[i].first;
	for (int i = 0; i < n; i++) cin >> data[i].second;
	sort(data.begin(), data.end());
	int ptr1 = 0, ptr2 = n - 1, t = 0, e = 0;
	while (ptr1 != ptr2) {
		if (e >= data[ptr1].first) {
			t += data[ptr1].second;
			e += data[ptr1].second;
			ptr1++;
			continue;
		}
		if (data[ptr1].first - e < data[ptr2].second) {
			data[ptr2].second -= data[ptr1].first - e;
			t += (data[ptr1].first - e) * 2;
			e += data[ptr1].first - e;
			continue;
		}
		e += data[ptr2].second;
		t += data[ptr2].second * 2;
		ptr2--;
	}
	int diff = max(0, data[ptr1].second - data[ptr1].first + e);
	t += diff;
	t += 2 * (data[ptr1].second - diff);
	cout << t;
	return 0;
}
SubtaskSumTestVerdictTimeMemory
base3/40
1Accepted0/01ms316 KiB
2Wrong answer0/013ms704 KiB
3Wrong answer0/21ms316 KiB
4Wrong answer0/22ms316 KiB
5Wrong answer0/210ms564 KiB
6Wrong answer0/221ms820 KiB
7Wrong answer0/23ms316 KiB
8Wrong answer0/24ms316 KiB
9Accepted3/31ms316 KiB
10Wrong answer0/31ms316 KiB
11Wrong answer0/31ms316 KiB
12Wrong answer0/31ms500 KiB
13Wrong answer0/41ms320 KiB
14Wrong answer0/41ms408 KiB
15Wrong answer0/239ms1112 KiB
16Wrong answer0/250ms1556 KiB
17Wrong answer0/243ms1212 KiB
18Wrong answer0/268ms1976 KiB