제출 #1368298

#제출 시각아이디문제언어결과실행 시간메모리
1368298hahahaA String Problem (EGOI25_stringproblem)C++20
100 / 100
122 ms16476 KiB
 
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define f first
#define s second
#define pb push_back
const int N=1e5+1;
struct coord{
    int a;
    int b;
}; 
int n;
bool fixat[2*N];
int id[2*N];
int str[2*N];
map<int,vector<int>>mp;
signed main(){
    cin>>n;
    int mod=2*n;
    int ans=0;
    int rot=1;
    for(int i=0; i<n; i++){
        int x,y;
        cin>>x>>y; 
        str[x]=y;
        str[y]=x;
        id[x]=i;
        id[y]=i;
        if(y<x) swap(x,y);
        mp[(x+y)%mod].pb(i);
        if(((x+y)%mod)%2) if(ans<(int)mp[(x+y)%mod].size()){
            ans=(int)mp[(x+y)%mod].size();
            rot=(x+y)%mod;
        }; 
    }  
    cout<<n-ans<<endl;
    for(int i=0; i<2*n; i++) fixat[i]=false;

    for (int i=0; i<2*n; i++){
        if ((i+str[i])%mod==rot)continue;
        int amu=i;
        while(fixat[amu]==false)
        { 
            cout<<id[amu]<<" "<<str[amu]<<" "<<(mod+rot-amu)%mod<<endl;
            fixat[amu]=true;
            fixat[(mod+rot-amu)%mod]=true;
            amu=str[(mod+rot-amu)%mod];
        } 
    }
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…