QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#297857#4831. Eager Sortingfxhd0 1ms3568kbC++171.9kb2024-01-05 12:05:452024-01-05 12:05:45

Judging History

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

  • [2024-01-05 12:05:45]
  • 评测
  • 测评结果:0
  • 用时:1ms
  • 内存:3568kb
  • [2024-01-05 12:05:45]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

#ifdef DEBUG
  #include "debug.hpp"
#else
  #define dbg(...) 0
#endif

int make_query(int i, int j) {
  cout << (i + 1) << ' ' << (j + 1) << endl;
  int r;
  cin >> r;
  return r;
}

vector<int> inds;

int is_smaller(int i, int j) {
  int r = make_query(inds[i], inds[j]);
  if (r < 0) return -1;
  if (r == 0) return (inds[i] < inds[j]);
  assert(r == 1);
  swap(inds[i], inds[j]);
  return (inds[i] < inds[j]);
}

void make_swap(int i, int j) {
  swap(inds[i], inds[j]);
};

bool solve(int n) {
  inds.resize(n);
  iota(inds.begin(), inds.end(), 0);
  vector<int> merged(n), inv_merged(n);
  auto dnc = [&](auto&& self, int l, int r) -> bool {
    if ((r - l) == 1) return true;
    int mid = (l + r) / 2;
    if (!self(self, l, mid)) return false;
    if (!self(self, mid, r)) return false;
    int i1 = l, i2 = mid, p = l;
    while ((i1 < mid) && (i2 < r)) {
      if (is_smaller(i1, i2)) {
        merged[p++] = i1++;
      }
      else {
        merged[p++] = i2++;
      }
    }
    while (i1 < mid) merged[p++] = i1++;
    while (i2 < r) merged[p++] = i2++;
    assert(p == r);
    for (int i = l; i < r; ++i) inv_merged[merged[i]] = i;
    for (int i = l; i < r; ++i) {
      if (int x = merged[i]; x != i) {
        make_swap(i, x);
        swap(merged[inv_merged[i]], merged[inv_merged[x]]);
        swap(inv_merged[i], inv_merged[x]);
      }
    }
    return true;
  };
  if (!dnc(dnc, 0, n)) return false;
  for (int i = 0; i < n; ++i) {
    if (inds[i] != i) {
      int j = 0;
      while (inds[j] != i) j++;
      if (make_query(inds[j], inds[i]) < 0) return false;
      swap(inds[j], inds[i]);
    }
  }
  cout << "-1 -1" << endl;
  return true;
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  solve(n);
}

詳細信息

Test #1:

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

Interactor to First Run

5
0
1
0
1
0
1
0
1
-1

First Run to Interactor

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

Interactor to Second Run

5
0
0
0
0
0

Second Run to Interactor

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

Manager to Checker

OK
good job!

result:

ok OK

Test #2:

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

Interactor to First Run

1

First Run to Interactor

-1 -1

Interactor to Second Run

1

Second Run to Interactor

-1 -1

Manager to Checker

OK
good job!

result:

ok OK

Test #3:

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

Interactor to First Run

2
0

First Run to Interactor

1 2
-1 -1

Interactor to Second Run

2
0

Second Run to Interactor

1 2
-1 -1

Manager to Checker

OK
good job!

result:

ok OK

Test #4:

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

Interactor to First Run

2
1

First Run to Interactor

1 2
-1 -1

Interactor to Second Run

2
0
-1

Second Run to Interactor

1 2
-1 -1

Manager to Checker

OK
good job!

result:

ok OK

Test #5:

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

Interactor to First Run

9
1
0
0
0
1
0
1
1
0
0
1
0
0
0
1
1
1
0
1
1
1

First Run to Interactor

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

Interactor to Second Run

9
0
0
0
0
0
0
0
0
0
0
0
0
0

Second Run to Interactor

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

Manager to Checker

OK
good job!

result:

ok OK

Test #6:

score: 100
Accepted
time: 0ms
memory: 3488kb

Interactor to First Run

9
0
1
1
1
0
1
1
0
0
1
0
0
0
1
0
1
1
1
0
1
1
1

First Run to Interactor

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

Interactor to Second Run

9
0
0
0
0
0
0
0
0
0
0
0
0
0

Second Run to Interactor

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

Manager to Checker

OK
good job!

result:

ok OK

Test #7:

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

Interactor to First Run

6
0
1
0
1
0
1
1
0
1
1
1
1

First Run to Interactor

2 3
1 2
2 3
5 6
4 5
1 4
4 5
5 6
2 6
2 4
3 5
5 6
-1 -1

Interactor to Second Run

6
0
0
0
0
0
0
0

Second Run to Interactor

2 3
1 2
5 6
4 5
1 4
2 4
3 4
-1 -1

Manager to Checker

OK
good job!

result:

ok OK

Test #8:

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

Interactor to First Run

20
1
0
1
1
1
1
0
1
1
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
1
0
1
1
0
0
1
0
1
1
1
0
0
1
1
0
1
0
0
0
0
0
1
1
0
1
0
0
0
0
1
1
1
1
0
1
0
1
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

First Run to Interactor

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

Interactor to Second Run

20
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Second Run to Interactor

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

Manager to Checker

OK
good job!

result:

ok OK

Test #9:

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

Interactor to First Run

15
0
0
1
1
0
1
1
0
1
0
0
1
0
0
0
1
1
1
1
1
1
1
1
0
1
0
0
0
1
1
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1

First Run to Interactor

2 3
1 2
4 5
6 7
4 6
5 6
6 7
1 4
2 4
4 5
3 5
8 9
10 11
8 10
9 10
12 13
14 15
12 14
14 15
8 12
12 14
14 15
15 13
9 15
10 15
1 8
2 8
4 8
3 8
8 12
12 14
5 14
14 13
6 14
14 9
7 14
14 10
14 15
15 11
3 4
5 8
6 12
7 8
8 13
9 12
10 12
11 13
13 14
-1 -1

Interactor to Second Run

15
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Second Run to Interactor

2 3
1 2
4 5
6 7
4 6
5 6
1 4
2 4
3 4
8 9
10 11
8 10
9 10
12 13
14 15
12 14
13 14
8 12
9 12
10 12
11 12
1 8
2 8
3 8
4 8
5 8
6 8
7 8
-1 -1

Manager to Checker

OK
good job!

result:

ok OK

Test #10:

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

Interactor to First Run

20
0
1
0
1
1
1
1
1
1
0
1
1
1
1
0
1
1
1
1
1
1
0
1
0
0
1
0
1
0
1
1
1
1
1
0
0
1
1
0
0
0
0
0
0
1
1
1
0
1
0
0
1
1
1
0
1
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

First Run to Interactor

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

Interactor to Second Run

20
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Second Run to Interactor

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

Manager to Checker

OK
good job!

result:

ok OK

Test #11:

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

Interactor to First Run

27
0
1
1
1
1
1
1
0
1
0
0
0
1
0
1
1
0
1
0
1
1
1
0
0
0
1
0
1
0
1
1
1
0
0
1
0
0
0
1
1
0
0
0
1
1
1
0
1
1
0
0
0
1
1
1
0
1
0
1
1
1
1
1
1
1
0
1
1
-1

First Run to Interactor

2 3
1 2
2 3
5 6
4 5
5 6
1 4
4 5
2 5
5 6
3 6
8 9
7 8
8 9
10 11
12 13
10 12
11 12
12 13
7 10
10 11
11 12
12 13
8 13
9 13
1 7
7 10
4 10
10 11
2 11
11 12
12 8
5 12
3 12
6 12
12 9
12 13
15 16
14 15
15 16
17 18
19 20
17 19
18 19
19 20
14 17
17 18
15 18
18 19
19 20
16 20
22 23
21 22
22 23
24 25
26 27
24 26...

Interactor to Second Run

27
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
1
1
0
0
0
1
0
1
0
1
1
1
0
0
0
0
0
0
0
0
0
1
0
1
1
0
0
0
0
0
0
0
0
1
1
0
1
1
0
1
0
1
1
1
1
0
0
1
0
0
1
1
0
0
1
0
1
1
1
0
1
0
0
1
0
0
0
1
0
0
1
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

Second Run to Interactor

2 3
1 2
5 6
4 5
1 4
2 4
4 5
3 5
5 6
8 9
7 8
10 11
12 13
10 12
11 12
7 10
8 10
10 11
11 12
9 12
1 7
2 7
7 8
4 8
8 10
3 10
10 11
11 9
5 11
6 11
15 16
14 15
17 18
19 20
17 19
18 19
14 17
15 17
17 18
16 18
18 19
19 20
22 23
21 22
24 25
26 27
24 26
25 26
21 24
22 24
24 25
25 26
23 26
26 27
14 21
15 21
21...

Manager to Checker

OK
good job!

result:

ok OK

Test #12:

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

Interactor to First Run

30
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
0
1
0
0
1
0
0
1
0
0
0
1
0
1
0
0
1
0
0
1
1
0
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
0
0
1
1
1
0
1
1
0
0
0
0
1
1
0
1
1
0
0
0
0
1
0
1
1
0
1
1
0
1
1
1
1
1
1
1
0
0
1
1
0
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

First Run to Interactor

2 3
1 2
4 5
6 7
4 6
5 6
1 4
4 5
2 5
5 6
3 6
6 7
8 9
10 11
8 10
10 11
9 11
12 13
14 15
12 14
13 14
8 12
12 13
10 13
9 13
13 14
11 14
1 8
4 8
8 12
2 12
12 10
12 9
12 13
13 11
13 14
5 14
14 15
17 18
16 17
17 18
19 20
21 22
19 21
20 21
21 22
16 19
19 20
17 20
20 21
21 22
23 24
25 26
23 25
25 26
27 28
29...

Interactor to Second Run

30
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Second Run to Interactor

2 3
1 2
4 5
6 7
4 6
5 6
1 4
2 4
3 4
8 9
10 11
8 10
9 10
12 13
14 15
12 14
13 14
8 12
9 12
10 12
11 12
1 8
2 8
3 8
4 8
5 8
6 8
7 8
17 18
16 17
19 20
21 22
19 21
20 21
16 19
17 19
18 19
23 24
25 26
23 25
24 25
27 28
29 30
27 29
28 29
23 27
24 27
25 27
26 27
16 23
17 23
18 23
19 23
20 23
21 23
22 23
1 ...

Manager to Checker

OK
good job!

result:

ok OK

Test #13:

score: 0
Instance #1 Runtime Error

Interactor to First Run

39
0
0
0
1
1
1
0
1
1
1
0
1
0
1
0
1
0
0
0
1
1
1
1
1
1
1
0
1
1
0
1
1
0
0
0
0
0
1
1
0
1
1
1
0
0
1
1
1
0
1
1
0
1
0
1
1
1
0
0
1
0
1
0
0
0
1
1
0
1
0
0
1
1
1
1
0
0
0
1
0
0
0
0
1
1
0
0
0
1
1
0
1
1
1
0
1
0
1
1
1
1
1
0
1
1
0
0
0
0
0
1
1
1
1
0
1
0
0
1
1
0
1
1
1
1
1
0
0
0
1
0
0
1
1
0
1
1
0
1
0
0
0
1
0
0
1
0
1
1...

First Run to Interactor

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

Interactor to Second Run

39
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1

Second Run to Interactor

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

Manager to Checker

OK
good job!

result: