6234 2023. 11. 08 12:09:33 CWM Zsonglőrködés cpp17 Elfogadva 100/100 907ms 80692 KiB
// KKGyak.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
using namespace std;

#include <iostream>
#include <map>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>

int main()
{
    int a;
    cin >> a;
	map<int, multiset<int>> dataStr;
	set<int> exists;
	vector<int> exsistsVec;
	for (size_t i = 0; i < a; i++)
	{
		int a, b;
		cin >> a >> b;
		if (exists.count(a) == 0) {
			dataStr.insert({ a,multiset<int>() });
			exists.insert(a);
			exsistsVec.push_back(a);
		}
		dataStr[a].insert(b);
	}
	int res = 0;
	int testedIdx = 0;
	sort(exsistsVec.begin(), exsistsVec.end());
	while (true)
	{
		int chain = -1;
		int convToMap = exsistsVec[testedIdx];
		/*for (auto m : dataStr) {
			if (m.second.size() > 0) {
				chain = *m.second.begin();
				dataStr[m.first].erase(dataStr[m.first].begin());
				break;
			}
		}*/
		while (true) {
			if (dataStr[exsistsVec[testedIdx]].size() == 0) {
				testedIdx++;
				if (exsistsVec.size() <= testedIdx) break;
			}
			else {
				chain = *dataStr[exsistsVec[testedIdx]].begin();
				dataStr[exsistsVec[testedIdx]].erase(dataStr[exsistsVec[testedIdx]].begin());
				break;
			}
		}
		if (chain == -1) break;
		while (true)
		{
			if (exists.count(chain) == 1 && dataStr[chain].size()>0) {
				int old = chain;
				chain = *dataStr[chain].begin();
				dataStr[old].erase(dataStr[old].begin());
			}
			else break;
		}
		res++;
	}
	cout << res;
}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

// Tips for Getting Started: 
//   1. Use the Solution Explorer window to add/manage files
//   2. Use the Team Explorer window to connect to source control
//   3. Use the Output window to see build output and other messages
//   4. Use the Error List window to view errors
//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1816 KiB
2 Elfogadva 3ms 2000 KiB
subtask2 20/20
3 Elfogadva 7ms 3020 KiB
4 Elfogadva 199ms 25136 KiB
5 Elfogadva 550ms 59884 KiB
6 Elfogadva 782ms 71352 KiB
7 Elfogadva 883ms 79152 KiB
8 Elfogadva 906ms 79340 KiB
9 Elfogadva 772ms 79472 KiB
10 Elfogadva 879ms 79884 KiB
11 Elfogadva 769ms 79720 KiB
subtask3 35/35
12 Elfogadva 2ms 3468 KiB
13 Elfogadva 3ms 3596 KiB
14 Elfogadva 3ms 3624 KiB
15 Elfogadva 3ms 3620 KiB
16 Elfogadva 3ms 4004 KiB
17 Elfogadva 4ms 4096 KiB
18 Elfogadva 3ms 3984 KiB
19 Elfogadva 4ms 4092 KiB
20 Elfogadva 4ms 4088 KiB
subtask4 45/45
21 Elfogadva 7ms 4716 KiB
22 Elfogadva 83ms 9840 KiB
23 Elfogadva 617ms 61424 KiB
24 Elfogadva 259ms 21092 KiB
25 Elfogadva 907ms 80340 KiB
26 Elfogadva 305ms 22816 KiB
27 Elfogadva 878ms 80344 KiB
28 Elfogadva 282ms 22916 KiB
29 Elfogadva 763ms 80692 KiB