#include #define pb push_back #define f first #define s second #define pii pair #define mp make_pair using namespace std; const int MAX = 205; int n, k; string subreddit[MAX]; vector subscribers[MAX]; vector graph[MAX]; int l[MAX], r[MAX]; bool visited[MAX]; void build_graph() { for (int i = 1; i <= n; i++) { for (int j = 2; j < (int)subscribers[i].size(); j++) { if (subscribers[i][j - 2] < subscribers[i][j - 1] && subscribers[i][j - 1] < subscribers[i][j]) { graph[j + 1].push_back(i); graph[i + k].push_back(j + 1); } } } } int pair_up(int node) { if (visited[node]) { return 0; } else { visited[node] = true; } for (auto adj : graph[node]) { if (!r[adj]) { l[node] = adj; r[adj] = node; return 1; } else if (pair_up(r[adj])) { l[node] = adj; r[adj] = node; return 1; } } return 0; } void print_graph() { for (int i = 1; i <= k; i++) { cout << "Day " << i << ": "; for (int vaca : graph[i]) { cout << vaca << ' '; } cout << endl; } for (int i = k + 1; i <= n + k; i++) { cout << "Subreddit " << i - k << ": "; for (int day : graph[i]) { cout << day << ' '; } cout << endl; } } int main() { cin.sync_with_stdio(false); cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> subreddit[i]; for (int j = 1; j <= k; j++) { int temp; cin >> temp; subscribers[i].push_back(temp); } } build_graph(); for (bool ok = true; ok;) { ok = false; memset(visited, 0, sizeof(visited)); for (int i = 1; i <= k; i++) { if (!l[i] && pair_up(i)) { ok = true; } } } for (int day = 1; day <= k; day++) { cout << (l[day] ? subreddit[l[day]] : "none") << '\n'; } return 0; }