55192023-07-04 23:22:24AndrosGladiátorok (40 pont)cpp17Időlimit túllépés 22/40875ms16676 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <fstream>
#define ll long long
using namespace std;

//Magyarazattal

int main()
{
	//ifstream cin;
	//cin.open("be2.txt");
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	//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];
	}
	//Otlet: Ha a kello_ero={5, 2, 8}
	//akkor a 2-esen senki se fog elbukni. Mert mar atment az 5-oson.
	vector<pair<ll, ll>> akadalyok(szendb);
	ll max = 0;
	ll index = 0;
	for (int i = 0; i < szendb; i++)
	{
		if (kello_ero[i] > max) {//Ha uj legnagyobb "akadaly" van
			max = kello_ero[i];
			akadalyok[index]={ kello_ero[i], i };
			index++;//lementem indexxel egyutt
		}
	}

	//A vegen elkapjuk a legerosebbet egy nagyon nagy szammal
	//                    9223372036854775807
	akadalyok.push_back({ 9223372036854775807, szendb });
	//akadalyok.push_back({ 10000000000000000000, szendb });


	for (ll glad : caesar) {
		for (auto elem :akadalyok) {
			if (elem.first > glad) {//Ennek mindig meg kene akadnia
				cout << elem.second << " ";
				break;
			}
		}
	}

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base22/40
1Elfogadva0/03ms1700 KiB
2Elfogadva0/014ms5860 KiB
3Elfogadva2/23ms2288 KiB
4Elfogadva2/23ms2508 KiB
5Elfogadva2/24ms3012 KiB
6Elfogadva2/24ms3204 KiB
7Elfogadva2/24ms3412 KiB
8Elfogadva2/24ms3368 KiB
9Elfogadva2/24ms3776 KiB
10Elfogadva2/24ms3752 KiB
11Elfogadva2/217ms5768 KiB
12Elfogadva2/275ms16676 KiB
13Elfogadva2/267ms11368 KiB
14Időlimit túllépés0/2838ms10288 KiB
15Időlimit túllépés0/2857ms10692 KiB
16Időlimit túllépés0/2862ms10716 KiB
17Időlimit túllépés0/2847ms10648 KiB
18Időlimit túllépés0/2862ms10728 KiB
19Időlimit túllépés0/2853ms10904 KiB
20Időlimit túllépés0/2875ms10968 KiB
21Időlimit túllépés0/2875ms10980 KiB
22Időlimit túllépés0/2865ms11076 KiB