Rezultati

Up. imeNalogaJezikRezultatČas oddaje
ASMx64-2018 Prehitevanje C++ 100/100OK 04. okt '18 @ 16:45

Test Točke Porabljen spomin Porabljen čas Status
#1 16/16 3,137 MiB 0,000 s OK
#2 16/16 3,203 MiB 0,010 s OK
#3 17/17 3,203 MiB 0,010 s OK
#4 17/17 4,547 MiB 1,932 s OK
#5 17/17 37,578 MiB 0,882 s OK
#6 17/17 3,051 MiB 0,004 s OK

Ocenjevani program (prehitevanje.cpp):
#include <map>
#include <vector>
#include <string>
#include <iostream>
using namespace std;

int main() {
	int stTek, stPov;
	string input, input2, prvoMesto, zadaj, spredaj;
	map<string, pair<string, string>> tekmovanje;
	vector<string> tekmovalci;

	cin >> stTek;

	for (int i = 0; i < stTek; i++) {
		cin >> input;
		tekmovalci.emplace_back(input);
	}

	for (unsigned int i = 0; i < tekmovalci.size(); i++) {
		if (i == 0) {
			prvoMesto = tekmovalci[i];
			tekmovanje[tekmovalci[i]] = make_pair("", tekmovalci[i + 1]);
		}
		else if (i == tekmovalci.size() - 1) {
			tekmovanje[tekmovalci[i]] = make_pair(tekmovalci[i - 1], "");
		}
		else {
			tekmovanje[tekmovalci[i]] = make_pair(tekmovalci[i - 1], tekmovalci[i + 1]);
		}
	}

	cin >> stPov;

	for (int i = 0; i < stPov; i++) {
		cin >> input >> input2;

		if (tekmovanje[input2].first == "") {
			prvoMesto = input;
		}
		else if (tekmovanje[input].first == "" && tekmovanje[input].second != input2) {
			prvoMesto = tekmovanje[input].second;
		}

		if (tekmovanje[input].first != "") tekmovanje[tekmovanje[input].first].second = tekmovanje[input].second;
		tekmovanje[tekmovanje[input].second].first = tekmovanje[input].first;

		tekmovanje[input].second = input2;
		tekmovanje[input].first = tekmovanje[input2].first;

		if (tekmovanje[input2].first != "") tekmovanje[tekmovanje[input2].first].second = input;
		tekmovanje[input2].first = input;

		/*tekmovanje[tekmovanje[input].second].first = tekmovanje[input].first;
		
		if (tekmovanje[input].second == "") {
			tekmovanje[input].second = input2;
			tekmovanje[tekmovanje[input].first].second = "";
		}
		else {
			tekmovanje[tekmovanje[input].second].first = tekmovanje[input].first;
			if (tekmovanje[input].first != "") tekmovanje[tekmovanje[input].first].second = tekmovanje[input].second;
		}

		tekmovanje[input].first = tekmovanje[input2].first;

		if (tekmovanje[input2].first != "") {
			tekmovanje[tekmovanje[input2].first].second = input;
		}
		tekmovanje[input2].first = input;*/
	}

	while (true) {
		if (prvoMesto.empty()) break;
		cout << prvoMesto << endl;
		prvoMesto = tekmovanje[prvoMesto].second;
	}

	return 0;
}