提出 #45791936
ソースコード 拡げる
// LUOGU_RID: 125558222
#include <bits/stdc++.h>
#define ls num << 1
#define rs ls | 1
#define li ls, l, mid
#define ri rs, mid + 1, r
#define debug cerr << "[" << __LINE__ << "] "
#define SZ(x) (int) x.size() - 1
#define all(x) x.begin(), x.end()
#define ms(x, y) memset(x, y, sizeof x)
#define F(i, x, y) for (int i = (x); i <= (y); i++)
#define DF(i, x, y) for (int i = (x); i >= (y); i--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
template <typename T> inline void chkmax(T& x, T y) { x = max(x, y); }
template <typename T> inline void chkmin(T& x, T y) { x = min(x, y); }
template <typename T> inline void read(T &x) {
x = 0; int f = 1; char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
x *= f;
}
const int N = 4e5 + 10;
int n, a[N], t[2][N];//, p[N];
bool vis[N];
// set <int> b;
// set <int> s;
priority_queue <pair <int, int>, vector <pair <int, int>>, greater <pair <int, int>>> q;
int seg[N << 2];
set <int> g;
void pushup(int num) {
seg[num] = min(seg[ls], seg[rs]);
}
void modify(int num, int l, int r, int x, int y) {
if (l == r) {
seg[num] = y;
return;
}
int mid = (l + r) >> 1;
if (mid >= x) modify(li, x, y);
else modify(ri, x, y);
pushup(num);
}
int findpos(int num, int l, int r, int x, int y) {
if (seg[num] >= y) return -1;
if (l == r) return l;
int mid = (l + r) >> 1;
if (mid > x) {
int t = findpos(li, x, y);
if (~t) return t;
}
return findpos(ri, x, y);
}
int sub(int x) {
int g = findpos(1, 1, 2 * n, x, t[1][a[x]]);
// cout << x << " " << g << " " << a[x] << " " << t[1][a[x]] << endl;
return g;
}
void add(int x) {
g.insert(x);
q.emplace(a[x], x);
}
void build() {
// puts("!!!");
// int x = *s.begin();
// int l = 0, r = n + 1;
int x = 0;
while (true) {
int y = sub(x);
// cout << " -> " << x << " " << y << endl;
if (y == -1) break;
add(y);
x = y;
// auto it = s.lower_bound(x);
// if (it == )
// if (t[1][a[x]] == x + 1) break;
}
}
signed main() {
read(n);
t[1][0] = 2 * n + 1;
F(i, 1, n * 2) {
read(a[i]);
// cout << " -> " << !!t[0][a[i]] << endl;
t[!!t[0][a[i]]][a[i]] = i;
// s.insert(i);
}
g.insert(0);
ms(seg, 0x3f);
F(i, 1, n) modify(1, 1, 2 * n, t[0][i], t[1][i]);//, cout << "& " << t[0][i] << " " << t[1][i] << endl;
F(i, 1, n) {
if (q.empty()) build();
int x = q.top().second; q.pop();
// cout << "# " << x << endl;
cout << a[x] << " " << a[x] << " ";
// debug << x << " " << a[x] << endl;
modify(1, 1, 2 * n, x, 1e9);
// p[t[0][x]] = p[t[1][x]] = i;
// cout << a[x] << " ";
g.erase(x);
int pos = *prev(g.lower_bound(x)), pp = sub(pos);
// cout << " -> " << pos << " " << pp << endl;
while (pp != -1 && !g.count(pp)) {
add(pp);
pp = sub(pp);
}
}
// F(i, 1, 2 * n) cout << p[i] << " ";
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
F - Make Adjacent |
| ユーザ |
ast123 |
| 言語 |
C++ 20 (gcc 12.2) |
| 得点 |
800 |
| コード長 |
2870 Byte |
| 結果 |
AC |
| 実行時間 |
288 ms |
| メモリ |
23496 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
800 / 800 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
| All |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_rand_01.txt, 01_rand_02.txt, 01_rand_03.txt, 01_rand_04.txt, 01_rand_05.txt, 01_rand_06.txt, 01_rand_07.txt, 01_rand_08.txt, 01_rand_09.txt, 01_rand_10.txt, 01_rand_11.txt, 01_rand_12.txt, 01_rand_13.txt, 01_rand_14.txt, 01_rand_15.txt, 02_extreme_01.txt, 02_extreme_02.txt, 02_extreme_03.txt, 02_extreme_04.txt, 02_extreme_05.txt, 02_extreme_06.txt, 02_extreme_07.txt, 02_extreme_08.txt, 02_extreme_09.txt, 02_extreme_10.txt, 02_extreme_11.txt, 02_extreme_12.txt, 02_extreme_13.txt, 02_extreme_14.txt, 02_extreme_15.txt, 02_extreme_16.txt, 02_extreme_17.txt, 02_extreme_18.txt, 02_extreme_19.txt, 02_extreme_20.txt, 02_extreme_21.txt, 02_extreme_22.txt, 02_extreme_23.txt, 03_handmade_01.txt, 03_handmade_02.txt, 03_handmade_03.txt, 03_handmade_04.txt, 03_handmade_05.txt, 03_handmade_06.txt, 03_handmade_07.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_01.txt |
AC |
3 ms |
9816 KiB |
| 00_sample_02.txt |
AC |
3 ms |
9744 KiB |
| 00_sample_03.txt |
AC |
3 ms |
9720 KiB |
| 01_rand_01.txt |
AC |
174 ms |
12864 KiB |
| 01_rand_02.txt |
AC |
168 ms |
12968 KiB |
| 01_rand_03.txt |
AC |
167 ms |
12808 KiB |
| 01_rand_04.txt |
AC |
168 ms |
12908 KiB |
| 01_rand_05.txt |
AC |
168 ms |
12900 KiB |
| 01_rand_06.txt |
AC |
169 ms |
12832 KiB |
| 01_rand_07.txt |
AC |
168 ms |
13028 KiB |
| 01_rand_08.txt |
AC |
168 ms |
12884 KiB |
| 01_rand_09.txt |
AC |
168 ms |
12864 KiB |
| 01_rand_10.txt |
AC |
169 ms |
13052 KiB |
| 01_rand_11.txt |
AC |
167 ms |
13028 KiB |
| 01_rand_12.txt |
AC |
169 ms |
12848 KiB |
| 01_rand_13.txt |
AC |
166 ms |
12944 KiB |
| 01_rand_14.txt |
AC |
167 ms |
12892 KiB |
| 01_rand_15.txt |
AC |
168 ms |
12896 KiB |
| 02_extreme_01.txt |
AC |
100 ms |
13064 KiB |
| 02_extreme_02.txt |
AC |
173 ms |
21184 KiB |
| 02_extreme_03.txt |
AC |
130 ms |
12904 KiB |
| 02_extreme_04.txt |
AC |
97 ms |
12868 KiB |
| 02_extreme_05.txt |
AC |
156 ms |
21072 KiB |
| 02_extreme_06.txt |
AC |
139 ms |
12900 KiB |
| 02_extreme_07.txt |
AC |
114 ms |
12904 KiB |
| 02_extreme_08.txt |
AC |
288 ms |
21100 KiB |
| 02_extreme_09.txt |
AC |
165 ms |
12872 KiB |
| 02_extreme_10.txt |
AC |
101 ms |
12852 KiB |
| 02_extreme_11.txt |
AC |
173 ms |
21020 KiB |
| 02_extreme_12.txt |
AC |
131 ms |
12964 KiB |
| 02_extreme_13.txt |
AC |
97 ms |
12872 KiB |
| 02_extreme_14.txt |
AC |
157 ms |
21080 KiB |
| 02_extreme_15.txt |
AC |
142 ms |
12876 KiB |
| 02_extreme_16.txt |
AC |
113 ms |
12892 KiB |
| 02_extreme_17.txt |
AC |
286 ms |
21084 KiB |
| 02_extreme_18.txt |
AC |
165 ms |
12904 KiB |
| 02_extreme_19.txt |
AC |
145 ms |
18048 KiB |
| 02_extreme_20.txt |
AC |
145 ms |
18052 KiB |
| 02_extreme_21.txt |
AC |
145 ms |
18100 KiB |
| 02_extreme_22.txt |
AC |
146 ms |
17984 KiB |
| 02_extreme_23.txt |
AC |
145 ms |
18032 KiB |
| 03_handmade_01.txt |
AC |
4 ms |
9776 KiB |
| 03_handmade_02.txt |
AC |
96 ms |
12908 KiB |
| 03_handmade_03.txt |
AC |
97 ms |
12960 KiB |
| 03_handmade_04.txt |
AC |
94 ms |
12852 KiB |
| 03_handmade_05.txt |
AC |
93 ms |
12864 KiB |
| 03_handmade_06.txt |
AC |
162 ms |
23408 KiB |
| 03_handmade_07.txt |
AC |
175 ms |
23496 KiB |