| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1349792 | vjudge1 | A String Problem (EGOI25_stringproblem) | C++20 | 405 ms | 44548 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();
if(visited[node]){
Q.pop();
continue;
}
visited[node]=1;
Q.pop();
ll point=connected[node];
visited[point]=1;
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 time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
