QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#375861#6545. Connect the DotsJCY_WA 1ms7812kbC++142.1kb2024-04-03 16:37:462024-04-03 16:37:48

Judging History

你现在查看的是最新测评结果

  • [2024-04-03 16:37:48]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:7812kb
  • [2024-04-03 16:37:46]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using i128 = __int128;
using u128 = unsigned __int128;
template <typename T>
void chkmax(T &x, const T &y) {
  if (x < y) x = y;
}
template <typename T>
void chkmin(T &x, const T &y) {
  if (y < x) x = y;
}
constexpr int MAXN = 2e5 + 10;
int n, m, a[MAXN], mp[MAXN], pre[MAXN], nxt[MAXN], qu[MAXN], hd, tl;
bool vis[MAXN];
pair<int, int> ans[MAXN * 2];
bool check(int u) { return a[pre[u]] != a[nxt[u]]; }
void push(int u) {
  if (vis[u]) return;
  if (check(u)) {
    vis[u] = true;
    qu[tl++] = u;
    if (tl == MAXN) tl = 0;
  }
}
void erase(int u) {
  nxt[pre[u]] = nxt[u];
  pre[nxt[u]] = pre[u];
  push(pre[u]);
  push(nxt[u]);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int cas;
  cin >> cas;
  while (cas--) {
    cin >> n >> m;
    for (int i = 1; i <= n; ++i) cin >> a[i];
    fill(mp + 1, mp + m + 1, 0);
    for (int i = 1; i <= n; ++i) mp[a[i]] = 1;
    for (int i = 2; i <= m; ++i) mp[i] += mp[i - 1];
    m = mp[m];
    for (int i = 1; i <= n; ++i) a[i] = mp[a[i]];
    for (int i = 1; i <= n; ++i) {
      pre[i] = i - 1;
      nxt[i] = i + 1;
    }
    fill(vis + 1, vis + n + 1, false);
    vis[1] = vis[n] = true;
    hd = tl = 0;
    for (int i = 1; i <= n; ++i) push(i);
    int tp = 0;
    for (int i = 1; i < n; ++i)
      if (a[i] != a[i + 1]) ans[++tp] = {i, i + 1};
    for (int turn = 1; turn <= n - 2; ++turn) {
      while (hd != tl && !check(qu[hd])) {
        vis[qu[hd++]] = false;
        if (hd == MAXN) hd = 0;
      }
      if (hd == tl) {
        erase(nxt[1]);
      } else {
        int u = qu[hd++];
        if (hd == MAXN) hd = 0;
        vis[u] = false;
        ans[++tp] = {pre[u], nxt[u]};
        erase(u);
      }
    }
    cout << tp << "\n";
    for (int i = 1; i <= tp; ++i) cout << ans[i].first << " " << ans[i].second << "\n";
  }
  return 0;
}
/*
g++ F.cpp -o F -std=c++14 -O2 -Wall -Wextra -Wshadow -g -fsanitize=address,undefined
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 7732kb

input:

3
4 2
1 1 2 2
4 2
1 2 1 2
3 3
1 2 3

output:

3
2 3
1 3
1 4
4
1 2
2 3
3 4
1 4
3
1 2
2 3
1 3

result:

ok all 3 test passed

Test #2:

score: 0
Accepted
time: 0ms
memory: 7756kb

input:

1
2 2
1 2

output:

1
1 2

result:

ok all 1 test passed

Test #3:

score: 0
Accepted
time: 1ms
memory: 7648kb

input:

10
5 2
2 2 2 1 2
5 2
2 1 2 1 2
5 2
1 2 2 2 1
5 2
2 1 2 1 1
5 2
1 1 1 2 1
5 2
1 2 2 1 2
5 2
2 1 1 2 2
5 2
2 2 2 1 1
5 2
1 1 2 1 2
5 2
1 2 2 2 1

output:

4
3 4
4 5
2 4
1 4
5
1 2
2 3
3 4
4 5
1 4
4
1 2
4 5
1 3
3 5
5
1 2
2 3
3 4
3 5
1 5
4
3 4
4 5
2 4
1 4
5
1 2
3 4
4 5
1 3
1 5
4
1 2
3 4
1 3
3 5
4
3 4
2 4
2 5
1 5
5
2 3
3 4
4 5
1 3
1 5
4
1 2
4 5
1 3
3 5

result:

ok all 10 test passed

Test #4:

score: 0
Accepted
time: 1ms
memory: 7776kb

input:

10
7 2
1 2 1 1 1 2 1
7 2
1 1 2 1 2 1 2
7 2
2 2 1 1 2 1 1
7 2
1 1 1 2 2 1 1
7 2
1 2 2 1 2 2 1
7 2
2 1 2 2 2 2 1
7 2
1 2 1 2 2 2 2
7 2
2 2 1 2 1 2 1
7 2
2 1 1 2 1 2 2
7 2
2 2 1 2 1 1 2

output:

7
1 2
2 3
5 6
6 7
2 4
4 6
1 6
8
2 3
3 4
4 5
5 6
6 7
1 3
1 5
1 7
7
2 3
4 5
5 6
1 3
1 4
5 7
1 7
6
3 4
5 6
2 4
2 5
5 7
1 5
7
1 2
3 4
4 5
6 7
1 3
4 6
1 6
7
1 2
2 3
6 7
2 4
5 7
2 5
1 7
7
1 2
2 3
3 4
3 5
3 6
3 7
1 7
8
2 3
3 4
4 5
5 6
6 7
1 3
1 5
1 7
7
1 2
3 4
4 5
5 6
1 3
5 7
1 5
7
2 3
3 4
4 5
6 7
1 3
4 6
...

result:

ok all 10 test passed

Test #5:

score: 0
Accepted
time: 1ms
memory: 7812kb

input:

10
9 2
1 1 1 2 1 2 2 1 2
9 2
1 2 1 1 2 2 2 2 1
9 2
2 1 2 1 1 2 1 2 1
9 2
1 1 2 1 1 1 1 2 2
9 2
1 1 2 2 1 2 1 2 2
9 2
2 2 1 2 1 2 2 2 2
9 2
1 1 2 2 2 1 2 1 2
9 2
1 1 2 1 1 2 2 2 2
9 2
1 1 1 1 2 1 1 2 1
9 2
2 1 2 2 1 1 2 2 1

output:

10
3 4
4 5
5 6
7 8
8 9
2 4
5 7
1 4
1 7
1 9
9
1 2
2 3
4 5
8 9
2 4
4 6
7 9
4 7
1 7
11
1 2
2 3
3 4
5 6
6 7
7 8
8 9
3 5
1 5
1 7
1 9
9
2 3
3 4
7 8
1 3
3 5
6 8
6 9
3 6
1 9
10
2 3
4 5
5 6
6 7
7 8
1 3
1 4
7 9
1 6
1 9
9
2 3
3 4
4 5
5 6
1 3
5 7
5 8
5 9
1 5
10
2 3
5 6
6 7
7 8
8 9
1 3
1 4
4 6
1 7
1 9
9
2 3
3 4
...

result:

ok all 10 test passed

Test #6:

score: 0
Accepted
time: 1ms
memory: 7712kb

input:

1
5 2
1 1 2 2 1

output:

4
2 3
4 5
1 3
1 4

result:

ok all 1 test passed

Test #7:

score: 0
Accepted
time: 0ms
memory: 7724kb

input:

1
7 2
2 1 1 2 1 1 2

output:

7
1 2
3 4
4 5
6 7
1 3
4 6
1 6

result:

ok all 1 test passed

Test #8:

score: 0
Accepted
time: 0ms
memory: 7720kb

input:

1
9 2
2 1 1 2 1 1 1 2 2

output:

9
1 2
3 4
4 5
7 8
1 3
4 6
6 8
6 9
1 6

result:

ok all 1 test passed

Test #9:

score: 0
Accepted
time: 0ms
memory: 7808kb

input:

4
20 2
2 1 1 2 1 2 1 1 2 1 1 1 1 2 2 2 1 1 2 2
20 2
2 1 2 2 2 1 1 2 2 2 1 2 2 2 2 1 2 2 1 2
20 2
2 2 1 1 2 2 1 1 1 1 1 2 1 1 2 2 1 2 1 1
20 2
2 1 2 2 2 1 2 2 1 1 1 2 1 2 2 1 2 1 1 2

output:

23
1 2
3 4
4 5
5 6
6 7
8 9
9 10
13 14
16 17
18 19
1 3
6 8
9 11
12 14
12 15
15 17
15 18
18 20
9 12
1 5
1 8
1 12
1 18
23
1 2
2 3
5 6
7 8
10 11
11 12
15 16
16 17
18 19
19 20
2 4
4 6
4 7
7 9
9 11
11 13
14 16
16 18
11 14
1 7
1 11
1 16
1 19
23
2 3
4 5
6 7
11 12
12 13
14 15
16 17
17 18
18 19
1 3
1 4
4 6
6 ...

result:

ok all 4 test passed

Test #10:

score: 0
Accepted
time: 1ms
memory: 7676kb

input:

4
100 2
2 2 2 1 2 1 1 1 1 2 2 1 2 2 2 1 2 2 2 2 1 1 1 2 2 1 1 2 1 1 2 1 2 2 1 1 1 2 1 2 1 1 2 1 2 1 2 1 2 1 1 1 1 2 1 1 1 2 2 2 1 2 2 2 1 1 1 2 1 2 1 2 2 1 2 2 1 1 2 1 1 1 1 2 2 1 2 1 1 2 2 1 2 2 1 2 1 2 2 2
100 2
2 1 1 1 1 1 2 2 2 1 2 1 2 2 1 2 2 1 1 1 1 2 1 1 1 2 2 1 1 2 1 1 2 1 1 2 1 1 1 1 1 2 1 ...

output:

126
3 4
4 5
5 6
9 10
11 12
12 13
15 16
16 17
20 21
23 24
25 26
27 28
28 29
30 31
31 32
32 33
34 35
37 38
38 39
39 40
40 41
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
53 54
54 55
57 58
60 61
61 62
64 65
67 68
68 69
69 70
70 71
71 72
73 74
74 75
76 77
78 79
79 80
83 84
85 86
86 87
87 88
89 90
91 ...

result:

ok all 4 test passed

Test #11:

score: 0
Accepted
time: 1ms
memory: 7708kb

input:

1
100 2
2 2 1 1 2 2 2 1 1 2 1 1 1 2 2 1 2 2 2 1 1 2 2 1 1 2 2 2 1 2 1 1 2 1 1 2 2 1 2 1 1 2 1 2 2 1 2 2 2 2 1 2 1 2 1 1 2 1 1 1 1 1 2 2 2 1 1 2 1 2 2 2 2 1 1 2 2 2 1 1 2 2 2 1 2 2 1 2 1 2 1 2 2 2 1 2 2 2 1 1

output:

125
2 3
4 5
7 8
9 10
10 11
13 14
15 16
16 17
19 20
21 22
23 24
25 26
28 29
29 30
30 31
32 33
33 34
35 36
37 38
38 39
39 40
41 42
42 43
43 44
45 46
46 47
50 51
51 52
52 53
53 54
54 55
56 57
57 58
62 63
65 66
67 68
68 69
69 70
73 74
75 76
78 79
80 81
83 84
84 85
86 87
87 88
88 89
89 90
90 91
91 92
94 ...

result:

ok all 1 test passed

Test #12:

score: 0
Accepted
time: 0ms
memory: 7716kb

input:

1
100 2
1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1

output:

123
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
25 26
27 28
29 30
31 32
33 34
35 36
37 38
39 40
41 42
43 44
45 46
47 48
49 50
51 52
53 54
55 56
57 58
59 60
61 62
63 64
65 66
67 68
69 70
71 72
73 74
75 76
77 78
79 80
81 82
83 84
85 86
87 88
89 90
91 92
93 94
95 96
97 98
99 100
1 3
...

result:

ok all 1 test passed

Test #13:

score: 0
Accepted
time: 0ms
memory: 7708kb

input:

1
200 2
1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 ...

output:

208
3 4
13 14
23 24
33 34
43 44
53 54
63 64
73 74
83 84
93 94
103 104
113 114
123 124
133 134
143 144
153 154
163 164
173 174
183 184
193 194
2 4
2 5
12 14
12 15
22 24
22 25
32 34
32 35
42 44
42 45
52 54
52 55
62 64
62 65
72 74
72 75
82 84
82 85
92 94
92 95
102 104
102 105
112 114
112 115
122 124
12...

result:

ok all 1 test passed

Test #14:

score: -100
Wrong Answer
time: 0ms
memory: 7724kb

input:

4
7 3
2 2 3 1 3 1 1
7 3
3 1 2 2 3 1 3
7 3
2 1 3 3 2 3 2
7 3
3 2 3 1 3 1 3

output:

9
2 3
3 4
4 5
5 6
1 3
1 4
5 7
1 5
1 7
9
1 2
2 3
4 5
5 6
6 7
1 3
1 4
4 6
1 6
8
1 2
2 3
4 5
5 6
6 7
1 3
1 4
1 6
9
1 2
2 3
3 4
4 5
5 6
6 7
2 4
1 4
1 6

result:

wrong answer output = 8, answer = 9.