Submission #1366440

#TimeUsernameProblemLanguageResultExecution timeMemory
1366440uranhishigA String Problem (EGOI25_stringproblem)C++20
50 / 100
314 ms35140 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second

signed main(){
    int n;
    cin >> n;
    int N = 2 * n;
    vector<pair<int, int>> v(n);
    vector<bool> vis(N, false);
    map<int, int> pos;
    map<int, int> id;
    map<int, int> mp;
    for (int i = 0; i < n; i++) {
        cin >> v[i].ff >> v[i].ss;
        int k = (v[i].ff + v[i].ss) % N;
        mp[k]++;
        id[v[i].ff] = i;
        id[v[i].ss] = i;
        pos[v[i].ff] = v[i].ss;
        pos[v[i].ss] = v[i].ff;
    }
    int mx = 0;
    int goal = 1;
    for (auto[x, y]: mp) {
        if (x % 2 == 1) {
            if (y > mx) {
                mx = y;
                goal = x;
            }
        }
    }
    int ans = n - mx;
    cout << ans << endl;
    for (int i = 0; i < N; i++) {
    	if((pos[i] + i) % N != goal) {
    		int now = i;
    		if (vis[now] == false) {
    			int opp = (goal-now+N) % N;
    			cout << id[i] << " " << pos[i] << " " << opp << endl;
    			vis[i] = true;
    			vis[opp] = true;
    			now = pos[opp];
			}
		}
	}

    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...