Submission #1305420
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define REP(i,n) for(int i=0,_n=(int)(n);i<_n;++i)
template<class T>bool chmin(T&a,const T&b){return a>b?(a=b,true):false;}
template<class T>bool chmax(T&a,const T&b){return a<b?(a=b,true):false;}
int nextInt() { int x; scanf("%d", &x); return x;}
const int MAX_N = 100000 + 10;
int A[MAX_N];
int Aorg[MAX_N];
int B[MAX_N];
int tmp[MAX_N];
// 内部的には 1-based であるが、利用するときには 0-based な実装
struct BIT {
int n;
vector<ll> tree;
BIT(int n):n(n),tree(n+1) {}
void fill(ll val) {
REP(i, n+1) tree[i] = (i&-i) * val;
}
void add(int idx, ll val) {
for (int x=idx+1; x<=n; x+=x&-x) tree[x] += val;
}
ll range(int idx) {
ll sum=0;
for (int x=idx+1; x>0; x-=x&-x) sum += tree[x];
return sum;
}
ll range(int a, int b) {
return range(b) - range(a - 1);
}
};
ll count_reverse_num(int* a, int N) {
ll ans = 0;
BIT bit(N);
REP(i, N) {
ans += i - bit.range(a[i]);
bit.add(a[i], +1);
}
return ans;
}
void renumber(int *A, int *T, int N) {
REP(i, N) tmp[T[i]] = i;
REP(i, N) A[i] = tmp[A[i]];
}
void renumber_inv(int *A, int *T, int N) {
REP(i, N) tmp[i] = T[i];
REP(i, N) A[i] = tmp[A[i]];
}
int main2() {
int N = nextInt();
REP(i, N) A[i] = nextInt() - 1;
REP(i, N) B[i] = nextInt() - 1;
REP(i, N) Aorg[i] = A[i];
// renumber(A, Aorg, N);
renumber(B, Aorg, N);
int bb = count_reverse_num(B, N);
if (bb % 2 == 1) {
cout << -1 << endl;
} else {
bb /= 2;
// // O(N^2) 解法
// for (int i = 0; i < N; i++) {
// for (int j = N - 1; j > i; j--) {
// if (B[j-1] > B[j]) {
// swap(B[j-1], B[j]);
// bb--;
// if (bb == 0) goto BK;
// }
// }
// }
// BK:
BIT bit(N+1);
int sz = 0;
for (int i = 0; i < N; i++) {
int g = bit.range(N - B[i]);
if (g <= bb) {
bb -= g;
sz++;
bit.add(N - B[i], +1);
} else {
break;
}
}
sort(B, B + sz);
for (int i = 0; i < N && bb > 0; i++) {
for (int j = N - 1; j > i && bb > 0; j--) {
if (B[j-1] > B[j]) {
swap(B[j-1], B[j]);
bb--;
}
}
}
renumber_inv(B, Aorg, N);
REP(i, N) { if (i > 0) cout << " "; cout << (B[i] + 1); } cout << endl;
}
return 0;
}
int main() {
for (;!cin.eof();cin>>ws) main2();
return 0;
}
Submission Info
Submission Time
2017-05-24 17:24:55+0900
Task
C - 転倒距離
User
hs484
Language
C++14 (GCC 5.4.1)
Score
30
Code Size
2577 Byte
Status
WA
Exec Time
37 ms
Memory
3184 KB
Compile Error
./Main.cpp: In function ‘int nextInt()’:
./Main.cpp:9:39: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int nextInt() { int x; scanf("%d", &x); return x;}
^
Judge Result
Set Name
Sample
Subtask1
Subtask2
Score / Max Score
0 / 0
30 / 30
0 / 70
Status
Set Name
Test Cases
Sample
sample_01.txt, sample_02.txt, sample_03.txt
Subtask1
sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt
Subtask2
sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt
Case Name
Status
Exec Time
Memory
sample_01.txt
AC
1 ms
256 KB
sample_02.txt
AC
1 ms
256 KB
sample_03.txt
AC
1 ms
256 KB
subtask1_01.txt
AC
2 ms
256 KB
subtask1_02.txt
AC
2 ms
384 KB
subtask1_03.txt
AC
2 ms
256 KB
subtask1_04.txt
AC
2 ms
256 KB
subtask1_05.txt
AC
1 ms
256 KB
subtask1_06.txt
AC
1 ms
256 KB
subtask1_07.txt
AC
1 ms
256 KB
subtask1_08.txt
AC
1 ms
256 KB
subtask1_09.txt
AC
2 ms
256 KB
subtask1_10.txt
AC
1 ms
256 KB
subtask1_11.txt
AC
2 ms
384 KB
subtask1_12.txt
AC
2 ms
256 KB
subtask1_13.txt
AC
1 ms
256 KB
subtask1_14.txt
AC
2 ms
256 KB
subtask1_15.txt
AC
2 ms
384 KB
subtask1_16.txt
AC
2 ms
384 KB
subtask1_17.txt
AC
2 ms
384 KB
subtask1_18.txt
AC
2 ms
384 KB
subtask1_19.txt
AC
2 ms
384 KB
subtask2_01.txt
AC
4 ms
640 KB
subtask2_02.txt
AC
31 ms
2596 KB
subtask2_03.txt
AC
37 ms
2992 KB
subtask2_04.txt
AC
13 ms
1536 KB
subtask2_05.txt
AC
19 ms
2048 KB
subtask2_06.txt
AC
11 ms
1280 KB
subtask2_07.txt
AC
20 ms
2176 KB
subtask2_08.txt
AC
37 ms
2988 KB
subtask2_09.txt
AC
14 ms
1536 KB
subtask2_10.txt
AC
12 ms
1408 KB
subtask2_11.txt
AC
17 ms
1460 KB
subtask2_12.txt
WA
33 ms
3080 KB
subtask2_13.txt
WA
34 ms
3184 KB
subtask2_14.txt
AC
21 ms
2304 KB
subtask2_15.txt
WA
34 ms
3184 KB
subtask2_16.txt
WA
34 ms
3184 KB
subtask2_17.txt
WA
33 ms
3184 KB
subtask2_18.txt
WA
34 ms
3184 KB
subtask2_19.txt
WA
34 ms
3184 KB