Submission #23624301
Source Code Expand
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rrep(i,a,b) for(int i=a;i>=b;i--)
#define fore(i,a) for(auto &i:a)
#define all(x) (x).begin(),(x).end()
//#pragma GCC optimize ("-O3")
using namespace std;
void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); _main(); }
typedef long long ll; const int inf = INT_MAX / 2; const ll infl = 1LL << 60;
template<class T>bool chmax(T& a, const T& b) { if (a < b) { a = b; return 1; } return 0; }
template<class T>bool chmin(T& a, const T& b) { if (b < a) { a = b; return 1; } return 0; }
//---------------------------------------------------------------------------------------------------
struct UnionFind {
using T = int;
const T def = 0;
T f(T a, T b) { return a + b; }
//==========================================
vector<int> par;
vector<T> value;
UnionFind() {}
UnionFind(int NV) { init(NV); }
void init(int NV) { par.clear(); rep(i, 0, NV) par.push_back(i); value.resize(NV, 1); }
void reset() { rep(i, 0, par.size()) par[i] = i; }
int operator[](int x) {
if (par[x] == x) return x;
else {
int res = operator[](par[x]);
if (res != par[x]) {
value[res] = f(value[res], value[par[x]]);
value[par[x]] = def;
}
return par[x] = res;
}
}
// uf(x,y)->y
void operator()(int x, int y) {
x = operator[](x); y = operator[](y);
if (x != y) {
value[y] += value[par[x]];
value[par[x]] = def;
par[x] = y;
}
}
T getValues(int x) { return value[operator[](x)]; };
};
/*---------------------------------------------------------------------------------------------------
∧_∧
∧_∧ (´<_` ) Welcome to My Coding Space!
( ´_ゝ`) / ⌒i @hamayanhamayan0
/ \ | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ _/ .| .|____
\/____/ (u ⊃
---------------------------------------------------------------------------------------------------*/
int N, A[201010];
//---------------------------------------------------------------------------------------------------
void _main() {
cin >> N;
rep(i, 0, N) cin >> A[i];
UnionFind uf(201010);
rep(i, 0, N / 2) uf(A[i], A[N - 1 - i]);
int ans = 0;
rep(i, 0, 201010) if (uf[i] == i) ans += uf.getValues(i) - 1;
cout << ans << endl;
}
Submission Info
| Submission Time |
|
| Task |
D - KAIBUNsyo |
| User |
hamayanhamayan |
| Language |
C++ (GCC 9.2.1) |
| Score |
400 |
| Code Size |
2515 Byte |
| Status |
AC |
| Exec Time |
35 ms |
| Memory |
5860 KiB |
Compile Error
./Main.cpp: In member function ‘void UnionFind::reset()’:
./Main.cpp:2:33: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
2 | #define rep(i,a,b) for(int i=a;i<b;i++)
......
23 | void reset() { rep(i, 0, par.size()) par[i] = i; }
| ~~~~~~~~~~~~~~~~
./Main.cpp:23:20: note: in expansion of macro ‘rep’
23 | void reset() { rep(i, 0, par.size()) par[i] = i; }
| ^~~
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
400 / 400 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
| All |
sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt |
| Case Name |
Status |
Exec Time |
Memory |
| sample_01.txt |
AC |
10 ms |
4940 KiB |
| sample_02.txt |
AC |
6 ms |
5012 KiB |
| sample_03.txt |
AC |
12 ms |
5076 KiB |
| test_01.txt |
AC |
6 ms |
5012 KiB |
| test_02.txt |
AC |
8 ms |
4904 KiB |
| test_03.txt |
AC |
13 ms |
5056 KiB |
| test_04.txt |
AC |
7 ms |
4964 KiB |
| test_05.txt |
AC |
6 ms |
5012 KiB |
| test_06.txt |
AC |
7 ms |
4920 KiB |
| test_07.txt |
AC |
31 ms |
5728 KiB |
| test_08.txt |
AC |
32 ms |
5636 KiB |
| test_09.txt |
AC |
11 ms |
5188 KiB |
| test_10.txt |
AC |
23 ms |
5620 KiB |
| test_11.txt |
AC |
16 ms |
5256 KiB |
| test_12.txt |
AC |
9 ms |
5032 KiB |
| test_13.txt |
AC |
16 ms |
5128 KiB |
| test_14.txt |
AC |
19 ms |
5332 KiB |
| test_15.txt |
AC |
26 ms |
5856 KiB |
| test_16.txt |
AC |
34 ms |
5684 KiB |
| test_17.txt |
AC |
24 ms |
5856 KiB |
| test_18.txt |
AC |
31 ms |
5664 KiB |
| test_19.txt |
AC |
35 ms |
5820 KiB |
| test_20.txt |
AC |
34 ms |
5860 KiB |
| test_21.txt |
AC |
34 ms |
5804 KiB |
| test_22.txt |
AC |
30 ms |
5804 KiB |
| test_23.txt |
AC |
29 ms |
5744 KiB |
| test_24.txt |
AC |
23 ms |
5800 KiB |
| test_25.txt |
AC |
24 ms |
5856 KiB |
| test_26.txt |
AC |
22 ms |
5796 KiB |
| test_27.txt |
AC |
28 ms |
5796 KiB |
| test_28.txt |
AC |
24 ms |
5804 KiB |