55062023-07-04 00:08:07AndrosKártyajátékcpp17Forditási hiba
#include <iostream>
#include <vector>
#define ll long long

//Oktatas.hu-rol ujrairva
//Magyarazattal
//Van egy talan erthetobb megoldas feltoltve,
//csak idolimit tullepes, mert kellenek az iteratoros magiak, hogy gyors legyen
//termeszetesen oktatas.hu-rol
using namespace std;

int main()
{

	ll n, k;
	cin >> n >> k;
	vector<ll> hand(k);//Osszes kartya

	//Beolvasas
	for (int i = 0; i < k; i++)
	{
		cin >> hand[i];
	}


	vector<ll> pontszerzok;
	//Ebbe lesznek belerakva a kartyak, amik szerezhettek pontot, de nem biztos hogy szerztek.
	//A hand tomb azon elemei lesznek benne a vegen, amik elott nem volt nagyobb kartya.
	//Pl 1 8 3 15 4 20 sorozat vegen a 20-as szerezhetne pontot, ha lenne ott egy 16-os
	vector<bool> pont(k);//Egy-egy kartya adott-e pontot

	for (ll card : hand) {
		//Visszaadja a helyet az elso `card`-nal nagyobb szamnak a pontszerzokbol.
		auto it = upper_bound(pontszerzok.begin(), pontszerzok.end(), card);
		if (it == pontszerzok.end()) {
			//`pontszerzok.end()`-et ad vissza, ha nem volt nagyobb
			//Ha nem volt nagyobb, lementve eddig, akkor szerezhet majd pontot
			//Lementjuk a pontszerzok tablaba
			pontszerzok.push_back(card);
		}
		else {
			//Ha volt nala nagyobb
			//Az elso olyan kartyat adja vissza, ami nala nagyobb a pontszerzokbol.
			//Ez az elsonek nala nagyobb kartya vette ki ot a paklibol,
			//azaz az a kartya tuti szerzett pontot.

			//Beallitjuk, hogy szerzett pontot.
			pont[it - pontszerzok.begin()] = true;
		}


	}
	//Osszeszamoljuk hogy mennyi kartya szerzett tenylegesen pontot.
	int sum = 0;
	for (bool b : pont) {
		if (b) sum += 1;
	}
	cout << sum;

}
Forditási hiba
exit status 1
main.cpp: In function 'int main()':
main.cpp:34:27: error: 'upper_bound' was not declared in this scope
   34 |                 auto it = upper_bound(pontszerzok.begin(), pontszerzok.end(), card);
      |                           ^~~~~~~~~~~
Exited with error status 1