Submission #1350224

#TimeUsernameProblemLanguageResultExecution timeMemory
1350224adriines06A String Problem (EGOI25_stringproblem)C++20
0 / 100
0 ms344 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){
    int n; cin>>n;
    vector<pair<int,int>>v(n);
    map<int,int>mp,pos;
    vector<int>conec(2*n);
    for(int i=0;i<n;i++){
        int a,b; cin>>a>>b;
        v[i]={a,b};
        conec[a]=b;
        conec[b]=a;
        int x=(a+b)%(2*n);
        if(x%2!=0) mp[x]++;
        pos[a]=i;
        pos[b]=i;
    }
    int maxi=0,s;
    for(auto x: mp){
        maxi=max(maxi,x.second);
        if(maxi==x.second) s=x.first;
    }
    cout<<n-maxi<<"\n";
    if(maxi==0) s=2*n-1;
    vector<bool>c(n,0);
    vector<int>w;
    for(int i=0;i<n;i++){
        int a=v[i].first, b=v[i].second;
        int x=(a+b)%(2*n);
        if(x==s && x%2!=0) c[i]=1;
        else w.push_back(i);
    }
    for (int i=0;i<w.size();i++) {
        if(c[i]) continue;
        int a=v[i].first;
        while(!c[pos[a]]) {
            cout<<a<<"\n";
            int nb=(s-a+2*n)%(2*n);
            cout<<pos[a]<<" "<<conec[a]<<" "<<nb<<"\n";
            v[pos[a]]={a,nb};
            c[pos[a]]=true;
            a=conec[nb];
        }
    }


}
int main(){
    ios::sync_with_stdio(0);
    cout.tie(0);
    cin.tie(0);
    solve();
    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...