QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#490125#8819. CNOI Knowledgedaishuchen2010AC ✓369ms34572kbC++201.1kb2024-07-25 11:29:532024-07-25 11:29:53

Judging History

This is the latest submission verdict.

  • [2024-07-25 11:29:53]
  • Judged
  • Verdict: AC
  • Time: 369ms
  • Memory: 34572kb
  • [2024-07-25 11:29:53]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e3 + 5;
const unsigned long long p = 322771;
int ans[MAXN],ts,cnt[MAXN],add[MAXN];
map <unsigned long long,int> mp;//表示最后一个哈希为x的字串的结尾
inline int ask(int l,int r)
{
	int res;
	cout << "? " << l << ' ' << r << endl;
	cin >> res;
	return res;
}
inline int getid(int l,int r)
{
	int rr = r,mid;
	while (l <= r)
	{
		mid = (l + r) / 2;
		if (ask(mid,rr) - cnt[mid] == rr - mid + 1) r = mid - 1;
		else l = mid + 1;
	}
	return r;
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n,id;
	unsigned long long _h;
	cin >> n;
	cnt[1] = ans[1] = mp[1] = ts = 1;
	for (int i = 2; i <= n; i++)
	{
		_h = 0;
		id = getid(1,i);
		if (!id) ans[i] = ++ts;
		else ans[i] = ans[id];
		for (int j = 1; j <= i; j++) add[j] = 0;
		for (int j = i; j >= 1; j--)
		{
			_h *= p,_h += ans[j];
			add[mp[_h] + 1]++,add[j + 1]--;//差分
			mp[_h] = j;
		}
		for (int j = 1; j <= i; j++) add[j] += add[j - 1],cnt[j] += add[j];
	}
	cout << "! ";
	for (int i = 1; i <= n; i++) cout << ans[i] << ' ';
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

12
3
3
6
6
10
6
15
10
21
10
20
15
14
6
9
14
34
43
19
5
2
1
19
5
13
8
25
9
19

output:

? 1 2
? 2 3
? 1 3
? 2 4
? 1 4
? 3 5
? 1 5
? 3 6
? 1 6
? 4 7
? 2 7
? 3 7
? 4 8
? 6 8
? 5 8
? 5 9
? 2 9
? 1 9
? 5 10
? 8 10
? 9 10
? 10 10
? 6 11
? 9 11
? 7 11
? 8 11
? 6 12
? 9 12
? 7 12
! 1 2 3 4 5 6 2 5 7 7 5 6 

result:

ok Accepted. 29 queries used.

Test #2:

score: 0
Accepted
time: 347ms
memory: 34432kb

input:

1000
3
2
1
3
2
1
5
11
7
8
2
1
7
2
1
11
5
7
11
5
3
15
5
2
1
15
3
2
1
19
4
2
1
17
4
2
1
20
4
2
1
15
4
2
1
23
9
13
15
23
11
5
3
31
11
5
3
36
11
5
2
1
45
15
3
2
1
48
15
5
11
7
58
16
5
2
1
59
16
5
12
8
69
21
8
2
1
69
20
8
3
5
79
20
8
2
1
76
20
8
3
5
87
26
8
3
5
88
26
8
2
1
100
24
8
3
5
98
24
8
2
1
111
31...

output:

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

result:

ok Accepted. 8792 queries used.

Test #3:

score: 0
Accepted
time: 322ms
memory: 34456kb

input:

1000
2
1
2
1
5
7
5
2
1
7
2
1
7
16
11
11
5
2
1
11
3
2
1
14
3
2
1
11
3
2
1
13
4
2
1
7
4
2
1
15
51
32
23
20
8
2
1
28
12
5
8
31
12
5
2
1
38
11
3
2
1
38
9
3
2
1
44
14
5
9
44
14
5
2
1
54
15
3
2
1
56
14
3
2
1
65
17
4
2
1
66
17
7
11
76
17
8
2
1
76
20
8
3
5
87
26
8
2
1
88
26
8
3
5
102
26
8
3
5
102
26
8
2
1
1...

output:

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

result:

ok Accepted. 8780 queries used.

Test #4:

score: 0
Accepted
time: 305ms
memory: 34360kb

input:

1000
3
3
5
5
2
1
5
11
8
8
2
1
8
3
5
12
5
2
1
11
3
2
1
16
5
11
7
15
5
3
20
7
3
5
21
8
2
1
27
7
2
1
26
4
2
1
31
5
3
2
1
27
5
3
2
1
31
5
3
2
1
26
5
3
2
1
35
11
17
26
35
14
5
3
44
15
5
2
1
44
15
3
2
1
53
19
4
2
1
55
19
7
14
9
63
19
8
3
5
62
19
8
2
1
69
24
7
2
1
70
23
7
15
11
81
23
8
3
5
83
25
7
3
5
99
3...

output:

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

result:

ok Accepted. 8787 queries used.

Test #5:

score: 0
Accepted
time: 369ms
memory: 34376kb

input:

1000
2
1
2
1
5
7
5
3
8
2
1
7
2
1
9
3
2
1
5
3
2
1
6
3
2
1
11
27
20
13
17
8
2
1
20
8
3
5
26
8
3
5
26
8
2
1
31
11
5
8
28
11
5
3
36
11
5
3
34
9
5
3
41
11
5
3
45
14
5
2
1
55
15
5
11
8
56
16
5
2
1
65
21
8
3
5
65
20
8
2
1
75
20
8
3
5
76
21
8
3
5
87
26
8
2
1
85
24
8
3
5
95
24
8
2
1
92
26
8
3
5
101
32
12
5
2...

output:

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

result:

ok Accepted. 8778 queries used.

Test #6:

score: 0
Accepted
time: 337ms
memory: 34380kb

input:

1000
2
1
3
5
5
2
1
5
12
8
8
2
1
8
3
5
12
5
2
1
12
5
8
16
5
2
1
16
5
12
8
21
8
3
5
21
7
3
5
26
7
3
5
23
7
3
5
27
9
5
3
27
11
5
2
1
34
11
5
8
34
11
5
3
41
15
5
3
41
14
5
3
48
11
5
3
52
14
5
2
1
63
19
7
2
1
66
20
7
15
11
77
21
8
2
1
79
21
7
2
1
91
27
7
16
11
91
27
8
2
1
104
26
8
3
5
103
26
8
2
1
115
31...

output:

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

result:

ok Accepted. 8781 queries used.

Test #7:

score: 0
Accepted
time: 307ms
memory: 34568kb

input:

1000
3
2
1
3
2
1
5
12
8
2
1
7
2
1
11
5
7
11
5
3
15
5
2
1
15
3
2
1
22
41
61
50
23
8
3
5
29
7
3
5
29
8
2
1
37
13
23
29
37
13
5
3
45
11
5
3
44
9
5
3
51
11
5
3
47
11
5
3
57
15
29
47
38
58
17
6
13
9
69
22
9
3
6
68
21
9
3
6
80
21
9
3
5
80
23
9
18
13
94
30
9
3
6
94
31
9
2
1
108
30
9
17
13
110
28
9
17
13
12...

output:

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

result:

ok Accepted. 8757 queries used.

Test #8:

score: 0
Accepted
time: 349ms
memory: 34568kb

input:

1000
3
2
1
5
9
6
13
9
9
3
5
7
3
5
11
5
2
1
11
3
2
1
17
37
29
22
17
5
2
1
22
7
2
1
19
4
2
1
27
63
44
35
28
9
15
21
35
13
6
9
33
13
5
2
1
42
13
5
8
43
11
5
3
52
15
5
3
54
16
5
2
1
65
17
37
29
65
18
5
3
76
23
7
3
5
77
23
9
17
89
23
9
3
6
87
23
9
2
1
100
29
7
2
1
100
30
7
17
11
115
30
9
17
23
116
30
9
2...

output:

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

result:

ok Accepted. 8720 queries used.

Test #9:

score: 0
Accepted
time: 333ms
memory: 34532kb

input:

1000
3
3
6
5
2
1
5
13
8
8
2
1
9
18
24
13
5
2
1
13
31
24
18
18
5
3
17
5
3
23
9
17
23
9
2
1
29
7
2
1
27
4
2
1
32
5
3
2
1
29
5
3
2
1
33
5
3
2
1
33
9
15
24
42
15
24
33
42
17
6
13
9
51
17
5
2
1
51
17
5
13
9
63
23
8
2
1
67
23
7
2
1
80
23
7
16
11
83
21
8
2
1
95
26
8
3
5
95
29
62
44
35
110
30
9
3
5
111
30
8...

output:

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

result:

ok Accepted. 8742 queries used.

Test #10:

score: 0
Accepted
time: 360ms
memory: 34512kb

input:

1000
2
1
3
5
6
9
6
13
9
9
2
1
7
2
1
12
22
17
11
5
3
15
5
3
17
36
29
22
23
9
2
1
23
9
18
13
30
8
3
5
30
8
2
1
36
11
5
8
33
11
5
3
41
11
5
3
41
12
27
32
51
17
5
2
1
51
18
5
13
8
61
18
6
13
62
18
5
2
1
74
24
9
18
13
75
23
9
17
13
87
23
9
3
5
88
23
7
3
5
100
28
7
3
5
101
28
9
15
21
115
27
9
3
5
115
28
8...

output:

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

result:

ok Accepted. 8735 queries used.

Test #11:

score: 0
Accepted
time: 350ms
memory: 34572kb

input:

1000
2
1
3
5
5
2
1
5
12
8
9
18
9
3
6
13
5
2
1
13
5
8
18
6
13
18
5
3
24
8
2
1
24
9
18
13
30
8
3
5
29
8
2
1
36
11
3
2
1
36
12
22
29
45
12
29
23
17
46
13
5
3
55
17
5
3
53
15
5
3
64
15
35
28
21
64
17
6
13
9
76
23
9
2
1
76
24
8
3
5
88
24
9
18
13
89
24
9
2
1
102
31
9
18
13
102
30
8
2
1
116
30
8
3
5
115
30...

output:

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

result:

ok Accepted. 8740 queries used.

Extra Test:

score: 0
Extra Test Passed