백준 c++ 21156 A Rank Problem
21156 A Rank Problem
문제풀이
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
void fast_io(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int main()
{
fast_io();
list<int> l;
std::list<int>::iterator it;
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++)
l.push_back(i);
while (m--)
{
it = l.begin();
string a, b;
cin >> a >> b;
int winner = stoi(a.substr(1));
int loser = stoi(b.substr(1));
int i = 0, ck = 0;
for (auto it = l.begin(); it != l.end(); it++)
{
if (*it == loser && i == 1)
{
ck = 1;
break;
}
else if (*it == winner)
i = 1;
}
if (ck == 0)
{
while (it != l.end())
{
if (*it == loser)
{
it = l.erase(it++);
}
else if (*it == winner)
{
l.insert(++it, loser);
}
else
{
it++;
}
}
}
}
for (auto it = l.begin(); it != l.end(); it++)
cout << "T" << *it << " ";
}
왼쪽이 이겼어도 이미 리스트에서 앞에있다면 원소값 변화를 주지 않아도 될때를 어떻게 할지 고민했다.
Author And Source
이 문제에 관하여(백준 c++ 21156 A Rank Problem), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaranda/백준-c-21156-A-Rank-Problem저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)