結果
| 問題 |
No.326 あみだますたー
|
| コンテスト | |
| ユーザー |
mayoko_
|
| 提出日時 | 2015-12-19 08:42:29 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 10 ms / 2,000 ms |
| コード長 | 1,551 bytes |
| コンパイル時間 | 865 ms |
| コンパイル使用メモリ | 87,372 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-07 23:22:33 |
| 合計ジャッジ時間 | 2,112 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 26 |
ソースコード
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
//#include<cctype>
#include<climits>
#include<iostream>
#include<string>
#include<vector>
#include<map>
//#include<list>
#include<queue>
#include<deque>
#include<algorithm>
//#include<numeric>
#include<utility>
#include<complex>
//#include<memory>
#include<functional>
#include<cassert>
#include<set>
#include<stack>
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1};
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
int toK[111];
int A[111], rA[111];
int main() {
int N;
cin >> N;
int K;
cin >> K;
for (int i = 0; i < N; i++) toK[i] = i;
for (int i = 0; i < K; i++) {
int x, y;
cin >> x >> y;
x--; y--;
swap(toK[x], toK[y]);
}
for (int i = 0; i < N; i++) {
cin >> A[i];
A[i]--;
rA[A[i]] = i;
}
vector<pii> ans;
for (int i = 0; i < N; i++) {
// j: 左から i 番目に来る数字
int j;
for (j = 0; j < N; j++) {
if (rA[i] == j) break;
}
// pos: j がある位置
int pos;
for (pos = 0; pos < N; pos++) {
if (toK[pos] == j) break;
}
while (pos > i) {
ans.emplace_back(pos, pos+1);
swap(toK[pos-1], toK[pos]);
pos--;
}
}
cout << ans.size() << endl;
for (pii p : ans) {
cout << p.first << " " << p.second << endl;
}
return 0;
}
mayoko_