Submission #43482086
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
//#define int long long
#define rep(i, a, b) for(int i = a; i <= b; ++i)
#define per(i, a, b) for(int i = a; i >= b; --i)
const int maxn = 1e5 + 5;
int n, diff, sa, sb;
int a[maxn], b[maxn], A[maxn], B[maxn];
map<int, int> val; int tot;
int fa[maxn], N;
inline bool exist(int x){ return val.find(x) == val.end();}
inline int fnd(int x){ return fa[x] == x ? x : fa[x] = fnd(fa[x]);}
inline void merge(int x, int y){
x = fnd(x), y = fnd(y);
if(x != y) fa[x] = y, N -= 1;
}
signed main(){
scanf("%d", &n); rep(i, 1, n) fa[i] = i;
rep(i, 1, n) scanf("%d", &A[i]),
a[i] = A[i], sa ^= a[i];
rep(i, 1, n) scanf("%d", &B[i]),
b[i] = B[i], sb ^= b[i];
a[n + 1] = sa, b[n + 1] = sb;
sort(a + 1, a + n + 2), sort(b + 1, b + n + 2);
rep(i, 1, n) if(a[i] != b[i]) return printf("-1"), 0;
rep(i, 1, n) if(A[i] != B[i]) diff += 1;
if(!diff) return printf("0"), 0;
rep(i, 1, n) if(A[i] != B[i] and exist(A[i]))
val[A[i]] = ++tot;
if(exist(sa)) val[sa] = ++tot; N = tot;
rep(i, 1, n) if(A[i] != B[i]) merge(val[A[i]], val[B[i]]);
printf("%d", diff + N - 1);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - XOR Replace |
| User | gsn531 |
| Language | C++ (GCC 9.2.1) |
| Score | 1000 |
| Code Size | 1241 Byte |
| Status | AC |
| Exec Time | 122 ms |
| Memory | 13392 KiB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:35:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
35 | if(exist(sa)) val[sa] = ++tot; N = tot;
| ^~
./Main.cpp:35:36: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
35 | if(exist(sa)) val[sa] = ++tot; N = tot;
| ^
./Main.cpp:21:10: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
21 | scanf("%d", &n); rep(i, 1, n) fa[i] = i;
| ~~~~~^~~~~~~~~~
./Main.cpp:22:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
22 | rep(i, 1, n) scanf("%d", &A[i]),
| ~~~~~^~~~~~~~~~~~~
./Main.cpp:24:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
24 | rep(i, 1, n) scanf("%d", &B[i]),
| ~~~~~^~~~~~~~~~~~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 1000 / 1000 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt |
| All | 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt, 1_46.txt, 1_47.txt, 1_48.txt, 1_49.txt, 1_50.txt, 1_51.txt, 1_52.txt, 1_53.txt, 1_54.txt, 1_55.txt, 1_56.txt, 1_57.txt, 1_58.txt, 1_59.txt, 1_60.txt, 1_61.txt, 1_62.txt, 1_63.txt, 1_64.txt, 1_65.txt, 1_66.txt, 1_67.txt, 1_68.txt, 1_69.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 0_00.txt | AC | 7 ms | 3624 KiB |
| 0_01.txt | AC | 2 ms | 3648 KiB |
| 0_02.txt | AC | 3 ms | 3544 KiB |
| 0_03.txt | AC | 2 ms | 3576 KiB |
| 1_00.txt | AC | 2 ms | 3556 KiB |
| 1_01.txt | AC | 2 ms | 3636 KiB |
| 1_02.txt | AC | 3 ms | 3592 KiB |
| 1_03.txt | AC | 2 ms | 3580 KiB |
| 1_04.txt | AC | 3 ms | 3556 KiB |
| 1_05.txt | AC | 3 ms | 3624 KiB |
| 1_06.txt | AC | 2 ms | 3640 KiB |
| 1_07.txt | AC | 42 ms | 5528 KiB |
| 1_08.txt | AC | 87 ms | 13392 KiB |
| 1_09.txt | AC | 82 ms | 10316 KiB |
| 1_10.txt | AC | 34 ms | 5624 KiB |
| 1_11.txt | AC | 33 ms | 5640 KiB |
| 1_12.txt | AC | 35 ms | 5600 KiB |
| 1_13.txt | AC | 35 ms | 5620 KiB |
| 1_14.txt | AC | 46 ms | 5492 KiB |
| 1_15.txt | AC | 37 ms | 5552 KiB |
| 1_16.txt | AC | 42 ms | 5672 KiB |
| 1_17.txt | AC | 37 ms | 5656 KiB |
| 1_18.txt | AC | 46 ms | 5508 KiB |
| 1_19.txt | AC | 40 ms | 5500 KiB |
| 1_20.txt | AC | 46 ms | 5624 KiB |
| 1_21.txt | AC | 44 ms | 5476 KiB |
| 1_22.txt | AC | 51 ms | 5644 KiB |
| 1_23.txt | AC | 40 ms | 5552 KiB |
| 1_24.txt | AC | 52 ms | 5632 KiB |
| 1_25.txt | AC | 40 ms | 5568 KiB |
| 1_26.txt | AC | 56 ms | 5632 KiB |
| 1_27.txt | AC | 41 ms | 5632 KiB |
| 1_28.txt | AC | 59 ms | 5496 KiB |
| 1_29.txt | AC | 43 ms | 5556 KiB |
| 1_30.txt | AC | 64 ms | 5652 KiB |
| 1_31.txt | AC | 42 ms | 5612 KiB |
| 1_32.txt | AC | 63 ms | 5712 KiB |
| 1_33.txt | AC | 43 ms | 5504 KiB |
| 1_34.txt | AC | 71 ms | 5844 KiB |
| 1_35.txt | AC | 47 ms | 5524 KiB |
| 1_36.txt | AC | 69 ms | 5940 KiB |
| 1_37.txt | AC | 44 ms | 5576 KiB |
| 1_38.txt | AC | 93 ms | 7100 KiB |
| 1_39.txt | AC | 46 ms | 5560 KiB |
| 1_40.txt | AC | 92 ms | 7080 KiB |
| 1_41.txt | AC | 46 ms | 5604 KiB |
| 1_42.txt | AC | 112 ms | 8900 KiB |
| 1_43.txt | AC | 46 ms | 5624 KiB |
| 1_44.txt | AC | 111 ms | 8768 KiB |
| 1_45.txt | AC | 45 ms | 5680 KiB |
| 1_46.txt | AC | 119 ms | 9816 KiB |
| 1_47.txt | AC | 45 ms | 5500 KiB |
| 1_48.txt | AC | 119 ms | 9884 KiB |
| 1_49.txt | AC | 41 ms | 5552 KiB |
| 1_50.txt | AC | 119 ms | 10032 KiB |
| 1_51.txt | AC | 44 ms | 5516 KiB |
| 1_52.txt | AC | 120 ms | 10236 KiB |
| 1_53.txt | AC | 44 ms | 5472 KiB |
| 1_54.txt | AC | 119 ms | 10172 KiB |
| 1_55.txt | AC | 46 ms | 5480 KiB |
| 1_56.txt | AC | 122 ms | 10336 KiB |
| 1_57.txt | AC | 45 ms | 5568 KiB |
| 1_58.txt | AC | 120 ms | 10308 KiB |
| 1_59.txt | AC | 45 ms | 5628 KiB |
| 1_60.txt | AC | 121 ms | 10316 KiB |
| 1_61.txt | AC | 46 ms | 5492 KiB |
| 1_62.txt | AC | 121 ms | 10184 KiB |
| 1_63.txt | AC | 47 ms | 5604 KiB |
| 1_64.txt | AC | 119 ms | 10216 KiB |
| 1_65.txt | AC | 45 ms | 5480 KiB |
| 1_66.txt | AC | 119 ms | 10264 KiB |
| 1_67.txt | AC | 45 ms | 5492 KiB |
| 1_68.txt | AC | 121 ms | 10160 KiB |
| 1_69.txt | AC | 43 ms | 5636 KiB |