55112023-07-04 19:30:33AndrosGladiátorok (40 pont)cpp17Time limit exceeded 30/40874ms11848 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#define ll long long
using namespace std;

//Magyarazattal

int main()
{

	//Hiba=>Mindenhol long long
	ll szendb, caedb;
	cin >> szendb >> caedb;
	//Beolvasas, a szenatorok parokba lesznek beolvasva.
	vector<pair<ll, ll>> szenator(szendb);
	for (ll i = 0; i < szendb; i++)
	{
		cin>>szenator[i].first >> szenator[i].second;
	}
	
	vector<ll> caesar(caedb);

	for (ll i = 0; i < caedb; i++)
	{
		cin>>caesar[i];
	}

	//A szortirozas az elso par szerll szortiroz.
	//A legjobb ha a leggyengebbek lesznek elol.
	sort(szenator.begin(), szenator.end());

	vector<ll> hozott_ero(szendb);//az ero, amit az eddig legyozott gladiatorokbol szerzunk.
	ll sum = 0;
	for (ll i = 0; i < szendb; i++)
	{
		hozott_ero[i] = sum;
		sum += szenator[i].second;
	}

	vector<ll> kello_ero(szendb);//Az ero ami az elejetol kell, hogy legyozzuk
	for (ll i = 0; i < szendb; i++)
	{
		kello_ero[i] = szenator[i].first - hozott_ero[i];
	}

	for (ll glad : caesar)
	{	
		ll mego = -1;
		for (int i = 0; i < szendb; i++)
		{
			//Az elso olyan, ami nagyobb nala, ott veszit.
			//Kiirjuk meddig jutott.
			if (glad < kello_ero[i]) {
				mego = i;
				break;
			}
		}
		if (mego == -1)cout << szendb << " ";
		else {
			cout << mego << " ";
		}
	}
}
SubtaskSumTestVerdictTimeMemory
base30/40
1Accepted0/03ms1808 KiB
2Accepted0/028ms4068 KiB
3Accepted2/23ms2340 KiB
4Accepted2/23ms2520 KiB
5Accepted2/26ms2968 KiB
6Accepted2/26ms3180 KiB
7Accepted2/26ms3136 KiB
8Accepted2/26ms3364 KiB
9Accepted2/27ms3572 KiB
10Accepted2/26ms3740 KiB
11Accepted2/228ms5056 KiB
12Accepted2/2137ms10992 KiB
13Accepted2/2123ms8468 KiB
14Accepted2/2638ms11592 KiB
15Accepted2/2639ms11848 KiB
16Accepted2/2653ms11804 KiB
17Accepted2/2642ms11820 KiB
18Time limit exceeded0/2845ms7324 KiB
19Time limit exceeded0/2874ms7256 KiB
20Time limit exceeded0/2842ms7420 KiB
21Time limit exceeded0/2861ms7740 KiB
22Time limit exceeded0/2861ms7732 KiB