147772025-02-02 12:06:32KateTaylorBányász RPG (40 pont)cpp17Hibás válasz 3/4065ms1588 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

typedef long long ll;

int main() {
	ll n;
	cin >> n;
	vector<pair<ll, ll>> 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((ll)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/01ms508 KiB
2Hibás válasz0/012ms564 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/29ms564 KiB
6Hibás válasz0/221ms820 KiB
7Hibás válasz0/23ms376 KiB
8Hibás válasz0/24ms316 KiB
9Elfogadva3/31ms508 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/31ms512 KiB
12Hibás válasz0/31ms316 KiB
13Hibás válasz0/41ms316 KiB
14Hibás válasz0/41ms316 KiB
15Hibás válasz0/237ms1076 KiB
16Hibás válasz0/250ms1460 KiB
17Hibás válasz0/241ms1076 KiB
18Hibás válasz0/265ms1588 KiB