8545 2024. 01. 21 16:55:53 zeytonx Bányász RPG (40 pont) cpp17 Elfogadva 40/40 48ms 10676 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pll pair<long, long>
#define endl "\n"
#define fs first
#define sc second
#define vll vector<ll>

void solve()
{
	ll n;
	cin >> n;
	map<ll,ll> m;
	vll a(n);
	ll remain = 0, ans = 0, exp = 0;
	for(ll i = 0; i < n; i++)
		cin >> a[i];
	for(ll i = 0; i < n; i++)
	{
		ll inp;
		cin >> inp;
		remain += inp;
		m[a[i]] += inp;
	}
	vector<pll> v;
	for(auto i : m)
		v.push_back({i.sc, i.fs});

	auto max_it = m.begin();
	ll max_v = -1;

	while(remain > 0)
	{
		for(auto it = m.begin(); it != m.end(); it++)
		{
			if((*it).sc == 0)
				continue;
			if((*it).fs > exp)
				break;
			ans += (*it).sc;
			remain -= (*it).sc;
			exp += (*it).sc;
			(*it).sc = 0;
		}

		if((*max_it).sc != max_v)
			for(auto it = m.begin(); it != m.end(); it++)
			{
				if((*it).sc > max_v)
				{
					max_v = (*it).sc;
					max_it = it;
				}
			}

		if((*max_it).sc > 0)
		{
			(*max_it).sc--;
			ans += 2;
			remain -= 1;
			exp++;
			max_v--;
		}
	}
	cout << ans << endl;
}

int main() 
{
	cin.tie(NULL); cout.tie(NULL);
	ios_base::sync_with_stdio(false);
	ll t = 1;
	//cin >> t;
	while(t--) solve();
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 3ms 1832 KiB
2 Elfogadva 0/0 12ms 4564 KiB
3 Elfogadva 2/2 3ms 2232 KiB
4 Elfogadva 2/2 3ms 2476 KiB
5 Elfogadva 2/2 4ms 2916 KiB
6 Elfogadva 2/2 8ms 3188 KiB
7 Elfogadva 2/2 3ms 3236 KiB
8 Elfogadva 2/2 4ms 3464 KiB
9 Elfogadva 3/3 3ms 3476 KiB
10 Elfogadva 3/3 3ms 3600 KiB
11 Elfogadva 3/3 3ms 3680 KiB
12 Elfogadva 3/3 3ms 3892 KiB
13 Elfogadva 4/4 3ms 3988 KiB
14 Elfogadva 4/4 3ms 4108 KiB
15 Elfogadva 2/2 29ms 9056 KiB
16 Elfogadva 2/2 37ms 9736 KiB
17 Elfogadva 2/2 32ms 9276 KiB
18 Elfogadva 2/2 48ms 10676 KiB