結果
| 問題 | No.326 あみだますたー |
| コンテスト | |
| ユーザー |
tottoripaper
|
| 提出日時 | 2018-03-08 21:18:35 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,566 bytes |
| 記録 | |
| コンパイル時間 | 1,964 ms |
| コンパイル使用メモリ | 175,512 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-05 08:15:25 |
| 合計ジャッジ時間 | 6,048 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 8 WA * 18 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define fst(t) std::get<0>(t)
#define snd(t) std::get<1>(t)
#define thd(t) std::get<2>(t)
#define unless(p) if(!(p))
#define until(p) while(!(p))
using ll = long long;
using P = std::tuple<int,int>;
const int dx[8] = {-1, 1, 0, 0, -1, -1, 1, 1}, dy[8] = {0, 0, -1, 1, -1, 1, -1, 1};
int A[110], B[110];
int main(){
std::cin.tie(nullptr);
std::ios::sync_with_stdio(false);
int N, K;
std::cin >> N >> K;
iota(A + 1, A + 1 + N, 1);
vector<P> w;
w.resize(K);
for(int i=0;i<K;++i){
std::cin >> fst(w[i]) >> snd(w[i]);
}
for(int i=K-1;i>=0;--i){
swap(A[fst(w[i])], A[snd(w[i])]);
}
for(int i=1;i<=N;++i){
std::cin >> B[i];
}
vector<P> v;
for(int i=1;i<=N;++i){
if(A[i] < B[i]){
int j = A[i];
while(j < B[i]){
v.emplace_back(j, j + 1);
int idx = find(A, A + 1 + N, j) - A, idx2 = find(A, A + 1 + N, j + 1) - A;
swap(A[idx], A[idx2]);
++j;
}
}else if(B[i] < A[i]){
int j = A[i];
while(j > B[i]){
v.emplace_back(j - 1, j);
int idx = find(A, A + 1 + N, j - 1) - A, idx2 = find(A, A + 1 + N, j) - A;
swap(A[idx], A[idx2]);
--j;
}
}
}
std::cout << v.size() << std::endl;
for(const auto &p : v){
int x, y;
tie(x, y) = p;
std::cout << x << " " << y << std::endl;
}
}
tottoripaper