# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
432973 | 2021-06-18T16:23:55 Z | wiwiho | 정렬하기 (IOI15_sorting) | C++14 | 10 ms | 460 KB |
#include "sorting.h" #include <bits/stdc++.h> #define printv(a, b) { \ for(auto pv : a) b << pv << " "; \ b << "\n"; \ } #define mp make_pair #define F first #define Sc second #define eb emplace_back using namespace std; typedef long long ll; using pii = pair<int, int>; const ll MOD = 1000000007; int findSwapPairs(int n, int S[], int m, int X[], int Y[], int P[], int Q[]) { vector<int> s(n); for(int i = 0; i < n; i++) s[i] = S[i]; vector<int> num(n); vector<int> pos(n); for(int i = 0; i < n; i++) num[i] = pos[i] = i; for(int i = 0; i < m; i++){ swap(num[pos[X[i]]], num[pos[Y[i]]]); swap(pos[X[i]], pos[Y[i]]); /*cerr << "num "; printv(num, cerr); cerr << "pos "; printv(pos, cerr);*/ } /*cerr << "num "; printv(num, cerr); cerr << "pos "; printv(pos, cerr);*/ vector<pii> ans; int cnt = 0; vector<int> now(n), np(n); for(int i = 0; i < n; i++) now[i] = i, np[i] = i; for(int i = 0; i < n; i++){ while(s[i] != num[i]){ //cerr << "test " << cnt << "\n"; swap(now[np[X[cnt]]], now[np[Y[cnt]]]); swap(np[X[cnt]], np[Y[cnt]]); //printv(now, cerr); cnt++; ans.eb(mp(now[i], now[pos[s[i]]])); swap(s[i], s[pos[s[i]]]); //printv(s, cerr); } } while(ans.size() < m) ans.eb(mp(0, 0)); for(int i = 0; i < m; i++){ P[i] = ans[i].F; Q[i] = ans[i].Sc; } assert(ans.size() <= m); for(int i = 0; i < m; i++){ //cerr << "round " << i << "\n"; swap(S[X[i]], S[Y[i]]); //for(int j = 0; j < n; j++) cerr << S[j] << " "; //cerr << "\n"; swap(S[P[i]], S[Q[i]]); //for(int j = 0; j < n; j++) cerr << S[j] << " "; //cerr << "\n"; bool ok = true; for(int i = 0; i < n; i++) if(S[i] != i) ok = false; if(ok) return i + 1; } //for(int i = 0; i < n; i++) assert(S[i] == i); return m; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 204 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 204 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 204 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 204 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 10 ms | 460 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 10 ms | 460 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |