147762025-02-02 12:01:57KateTaylorBányász RPG (40 pont)cpp17Hibás válasz 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base3/40
1Elfogadva0/01ms316 KiB
2Hibás válasz0/013ms704 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/22ms316 KiB
5Hibás válasz0/210ms564 KiB
6Hibás válasz0/221ms820 KiB
7Hibás válasz0/23ms316 KiB
8Hibás válasz0/24ms316 KiB
9Elfogadva3/31ms316 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/31ms316 KiB
12Hibás válasz0/31ms500 KiB
13Hibás válasz0/41ms320 KiB
14Hibás válasz0/41ms408 KiB
15Hibás válasz0/239ms1112 KiB
16Hibás válasz0/250ms1556 KiB
17Hibás válasz0/243ms1212 KiB
18Hibás válasz0/268ms1976 KiB