제출 #1350867

#제출 시각아이디문제언어결과실행 시간메모리
1350867mati_glA String Problem (EGOI25_stringproblem)C++20
0 / 100
0 ms348 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N;
    cin >> N;

    int M = 2*N;

    vector<pair<int,int>> s(N);
    vector<int> who(M);

    for(int i=0;i<N;i++){
        cin >> s[i].first >> s[i].second;
        who[s[i].first] = i;
        who[s[i].second] = i;
    }

    vector<tuple<int,int,int>> moves;

    for(int i=0;i<M;i+=2){
        int p1 = i;
        int p2 = i+1;

        int s1 = who[p1];
        int s2 = who[p2];

        if(s1 == s2) continue;

        // mover extremo de s1 hacia p2
        if(s[s1].first == p1){
            moves.push_back({s1, s[s1].second, p2});
            who[s[s1].second] = s2;
            s[s1].second = p2;
        } else {
            moves.push_back({s1, s[s1].first, p2});
            who[s[s1].first] = s2;
            s[s1].first = p2;
        }
    }

    cout << moves.size() << "\n";
    for(auto &t : moves){
        int p,s,e;
        tie(p,s,e) = t;
        cout << p << " " << s << " " << e << "\n";
    }

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