Submission #1349787

#TimeUsernameProblemLanguageResultExecution timeMemory
1349787ozner77A String Problem (EGOI25_stringproblem)C++20
0 / 100
0 ms344 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
    ll n;
    cin>>n;
    map<ll,ll> M;
    vector<pair<ll,ll>> V;
    map<ll,ll> connected;
    map<ll,ll> cuerda;
    for(int i=0;i<n;i++){
        ll a,b;
        cin>>a>>b;
        V.push_back({a,b});
        ll xd=a+b;
        xd%=2*n;
        connected[a]=b;
        connected[b]=a;
        cuerda[a]=i;
        cuerda[b]=i;
        if((a+b)%2!=0){
            M[xd]++;
        }
    }
    ll ans=0;
    ll modi=1;
    for(auto x:M){
        if(x.second>ans){
            ans=x.second;
            modi=x.first;
        }
    }
    cout<<n-ans<<"\n";
    map<ll,ll> visited;
    queue<ll> Q;
    for(int i=0;i<n;i++){
        ll xd=V[i].first+V[i].second;
        xd%=2*n;
        if(xd!=modi){
            Q.push(V[i].second);
        }
    }
    while(!Q.empty()){
        ll node=Q.front();
        visited[node]=1;
        Q.pop();
        ll point=connected[node];
        ll goin=(modi-point);
        goin%=2*n;
        if(goin<0){
            goin+=2*n;
        }
        cout<<cuerda[node]<<" "<<node<<" "<<goin<<"\n";
        if(visited[goin]){
            continue;
        }
        Q.push(goin);
    }
}
#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...