9867 2024. 03. 13 16:11:49 Gervid Bányász RPG (40 pont) cpp17 Időlimit túllépés 24/40 400ms 7408 KiB
#include <iostream>
#include <set>

using namespace std;

int main()
{
	unsigned int n, i, xp = 0, minutes = 0, max, maxi, min = 2147483647, mini;
	cin >> n;

	unsigned int* xpthreshold = new unsigned int[n];
	unsigned int* remaining = new unsigned int[n];

	for (i = 0; i < n; i++)
	{
		cin >> xpthreshold[i];
	}

	for (i = 0; i < n; i++)
	{
		cin >> remaining[i];
	}

	set<unsigned int> done;
	int lastsize = -1;
	
	while (done.size() < n)
	{
		if (done.size() != lastsize)
		{
			lastsize = done.size();
			
			min = 2147483647;
			for (i = 0; i < n; i++)
			{
				if (done.count(i) == 0 && xpthreshold[i] < min)
				{
					min = xpthreshold[i];
					mini = i;
					if (min <= xp)
					{
						break;
					}
				}
			}
		}

		if (xp >= min)
		{
			done.insert(mini);
			minutes += remaining[mini];
			xp += remaining[mini];
			continue;
		}

		lastsize = -1;
		while (xp < min && done.size() < n)
		{
			if (done.size() != lastsize)
			{
				lastsize = done.size();

				max = 0;
				for (i = 0; i < n; i++)
				{
					if (done.count(i) == 0 && xpthreshold[i] > max)
					{
						max = xpthreshold[i];
						maxi = i;
					}
				}
			}
			if (remaining[maxi]-- <= 1)
			{
				done.insert(maxi);
			}
			minutes += 2;
			xp++;
		}
	}
	cout << minutes;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 24/40
1 Elfogadva 0/0 3ms 1812 KiB
2 Időlimit túllépés 0/0 398ms 1676 KiB
3 Elfogadva 2/2 3ms 2432 KiB
4 Elfogadva 2/2 24ms 2824 KiB
5 Időlimit túllépés 0/2 351ms 2332 KiB
6 Időlimit túllépés 0/2 374ms 2948 KiB
7 Időlimit túllépés 0/2 374ms 3664 KiB
8 Időlimit túllépés 0/2 344ms 3204 KiB
9 Elfogadva 3/3 3ms 4116 KiB
10 Elfogadva 3/3 3ms 4032 KiB
11 Elfogadva 3/3 3ms 3924 KiB
12 Elfogadva 3/3 7ms 4340 KiB
13 Elfogadva 4/4 18ms 4212 KiB
14 Elfogadva 4/4 6ms 4404 KiB
15 Időlimit túllépés 0/2 400ms 4608 KiB
16 Időlimit túllépés 0/2 375ms 5660 KiB
17 Időlimit túllépés 0/2 365ms 6328 KiB
18 Időlimit túllépés 0/2 354ms 7408 KiB