QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#113955 | #866. Display of Springs | Hongzy | AC ✓ | 73ms | 3596kb | C++14 | 1.6kb | 2023-06-20 11:05:29 | 2023-06-20 11:05:30 |
Judging History
answer
#include <bits/stdc++.h>
#define LOG(FMT...) fprintf(stderr, FMT);
#define rep(i, j, k) for(int i = j; i <= k; ++ i)
#define per(i, j, k) for(int i = j; i >= k; -- i)
using namespace std;
const int N = 1e5 + 5, M = 100000;
int id[N << 2];
int query(int x, int y, int w) {
cout << "? " << x-1 << " " << y-1 << " " << w << endl;
string s;
cin >> s;
if(s == "FIRST") return -1;
if(s == "SECOND") return 1;
return 0;
}
int Min(int x, int y, int w) {
if(!x || !y) return x | y;
return query(x, y, w) == -1 ? x : y;
}
void modify(int u, int l, int r, int cur) {
if(!id[u]) {
id[u] = cur;
return ;
}
if(l == r) {
id[u] = Min(id[u], cur, l);
return ;
}
int mid = (l + r) >> 1;
if(Min(id[u], cur, mid) == cur)
swap(id[u], cur);
if(Min(id[u], cur, l) == cur) {
modify(u << 1, l, mid, cur);
} else {
modify(u << 1 | 1, mid + 1, r, cur);
}
}
int ans;
void solve(int u, int l, int r, int w) {
ans = Min(ans, id[u], w);
if(l == r) {
return ;
}
int mid = (l + r) >> 1;
if(w <= mid) solve(u << 1, l, mid, w);
else solve(u << 1 | 1, mid + 1, r, w);
}
int main() {
ios::sync_with_stdio(false);
int n;
cin >> n;
vector<int> p(n);
rep(i, 0, n - 1) p[i] = i + 1;
random_shuffle(p.begin(), p.begin() + n);
rep(i, 0, n - 1) {
modify(1, 1, M, p[i]);
}
cout << "!" << endl;
while(1) {
string s;
cin >> s;
if(s == "FINISH")
break;
int w;
cin >> w;
ans = 0;
solve(1, 1, M, w);
cout << "! " << ans-1 << endl;
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 3432kb
input:
3 SECOND FIRST FIRST SECOND QUESTION 2 SECOND QUESTION 6 FIRST FINISH
output:
? 0 2 50000 ? 2 0 1 ? 2 1 50000 ? 2 1 1 ! ? 2 1 2 ! 1 ? 2 1 6 ! 2
result:
ok Correct answer
Test #2:
score: 0
Accepted
time: 4ms
memory: 3444kb
input:
6 FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND SECOND SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST EQUAL SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND EQUAL QUESTION 1 SECOND SECOND SECOND SECOND EQUAL QUESTION 2 SECOND SECOND SECOND EQUAL FIRST QUESTION 3...
output:
? 4 3 50000 ? 4 3 1 ? 4 1 50000 ? 4 1 1 ? 3 1 25000 ? 3 1 1 ? 4 2 50000 ? 4 2 1 ? 3 2 25000 ? 3 2 1 ? 1 2 12500 ? 2 1 1 ? 4 0 50000 ? 4 0 1 ? 3 0 25000 ? 3 0 1 ? 2 0 12500 ? 2 0 1 ? 1 0 6250 ? 1 0 1 ? 4 5 50000 ? 5 4 1 ? 3 4 25000 ? 4 3 1 ? 2 3 12500 ? 3 2 1 ? 1 2 6250 ? 2 1 1 ? 0 1 3125 ? 1 0 1 ! ?...
result:
ok Correct answer
Test #3:
score: 0
Accepted
time: 16ms
memory: 3596kb
input:
326 FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST SECOND SECOND FIRST FIRST SECOND SECOND FIRST SECOND FIRST FIRST SECOND FIRST FIRST SECOND FIRST SECOND FIRST FIRST FIRST SECOND FIRST SECOND FIRST FIRST SECOND FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST FIRST FIRST SECON...
output:
? 110 290 50000 ? 110 290 1 ? 110 11 50000 ? 110 11 1 ? 290 11 75000 ? 290 11 50001 ? 110 69 50000 ? 110 69 1 ? 110 209 50000 ? 110 209 1 ? 69 209 25000 ? 209 69 1 ? 110 142 50000 ? 110 142 1 ? 209 142 25000 ? 142 209 1 ? 69 209 37500 ? 209 69 25001 ? 110 17 50000 ? 110 17 1 ? 142 17 25000 ? 142 17 ...
result:
ok Correct answer
Test #4:
score: 0
Accepted
time: 6ms
memory: 3504kb
input:
19 FIRST SECOND SECOND SECOND SECOND SECOND SECOND FIRST FIRST FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST ...
output:
? 4 10 50000 ? 4 10 1 ? 4 11 50000 ? 11 4 1 ? 10 4 25000 ? 4 10 1 ? 11 15 50000 ? 15 11 1 ? 15 14 50000 ? 15 14 1 ? 11 14 75000 ? 11 14 50001 ? 15 16 50000 ? 16 15 1 ? 11 15 75000 ? 15 11 50001 ? 14 11 87500 ? 11 14 75001 ? 16 17 50000 ? 17 16 1 ? 15 16 75000 ? 16 15 50001 ? 11 15 87500 ? 15 11 7500...
result:
ok Correct answer
Test #5:
score: 0
Accepted
time: 73ms
memory: 3572kb
input:
500 FIRST FIRST FIRST FIRST FIRST FIRST SECOND SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST FIRST...
output:
? 110 290 50000 ? 110 290 1 ? 110 11 50000 ? 110 11 1 ? 290 11 75000 ? 290 11 50001 ? 110 69 50000 ? 69 110 1 ? 69 209 50000 ? 69 209 1 ? 290 209 75000 ? 290 209 50001 ? 11 209 87500 ? 11 209 75001 ? 69 468 50000 ? 69 468 1 ? 290 468 75000 ? 290 468 50001 ? 11 468 87500 ? 468 11 75001 ? 209 11 93750...
result:
ok Correct answer
Test #6:
score: 0
Accepted
time: 46ms
memory: 3464kb
input:
500 EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQUAL EQ...
output:
? 110 290 50000 ? 290 110 1 ? 290 11 50000 ? 11 290 1 ? 110 290 25000 ? 290 110 1 ? 11 69 50000 ? 69 11 1 ? 290 11 25000 ? 11 290 1 ? 110 290 12500 ? 290 110 1 ? 69 209 50000 ? 209 69 1 ? 11 69 25000 ? 69 11 1 ? 290 11 12500 ? 11 290 1 ? 110 290 6250 ? 290 110 1 ? 209 468 50000 ? 468 209 1 ? 69 209 ...
result:
ok Correct answer
Test #7:
score: 0
Accepted
time: 28ms
memory: 3540kb
input:
500 SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST SECOND FIRST FIRST FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRS...
output:
? 110 290 50000 ? 290 110 1 ? 290 11 50000 ? 290 11 1 ? 110 11 75000 ? 110 11 50001 ? 290 69 50000 ? 290 69 1 ? 110 69 75000 ? 69 110 50001 ? 11 110 87500 ? 110 11 75001 ? 290 209 50000 ? 290 209 1 ? 69 209 75000 ? 69 209 50001 ? 110 209 87500 ? 110 209 75001 ? 11 209 93750 ? 209 11 87501 ? 290 468 ...
result:
ok Correct answer
Test #8:
score: 0
Accepted
time: 24ms
memory: 3524kb
input:
500 FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST FIRST FIRST SECOND FIRST SECOND ...
output:
? 110 290 50000 ? 110 290 1 ? 110 11 50000 ? 11 110 1 ? 290 110 75000 ? 110 290 50001 ? 11 69 50000 ? 69 11 1 ? 110 11 75000 ? 11 110 50001 ? 290 110 87500 ? 110 290 75001 ? 69 209 50000 ? 69 209 1 ? 11 209 75000 ? 11 209 50001 ? 110 209 87500 ? 110 209 75001 ? 290 209 93750 ? 209 290 87501 ? 69 468...
result:
ok Correct answer
Test #9:
score: 0
Accepted
time: 4ms
memory: 3444kb
input:
2 SECOND SECOND QUESTION 64500 QUESTION 22602 FIRST QUESTION 37446 FIRST QUESTION 97972 QUESTION 78630 QUESTION 75591 QUESTION 63328 QUESTION 64746 QUESTION 94532 QUESTION 51275 QUESTION 12189 FIRST QUESTION 64341 QUESTION 85825 QUESTION 63713 QUESTION 36778 FIRST QUESTION 27116 FIRST QUESTION 18630...
output:
? 0 1 50000 ? 1 0 1 ! ! 1 ? 1 0 22602 ! 1 ? 1 0 37446 ! 1 ! 1 ! 1 ! 1 ! 1 ! 1 ! 1 ! 1 ? 1 0 12189 ! 1 ! 1 ! 1 ! 1 ? 1 0 36778 ! 1 ? 1 0 27116 ! 1 ? 1 0 18630 ! 1 ! 1 ? 1 0 28074 ! 1 ! 1 ! 1 ? 1 0 39195 ! 1 ! 1 ? 1 0 1182 ! 1 ! 1 ! 1 ! 1 ? 1 0 7017 ! 1 ? 1 0 13589 ! 1 ! 1 ! 1 ? 1 0 48324 ! 1 ! 1 ! 1 ...
result:
ok Correct answer
Test #10:
score: 0
Accepted
time: 2ms
memory: 3456kb
input:
2 SECOND SECOND QUESTION 54311 QUESTION 8466 SECOND QUESTION 82055 QUESTION 65419 QUESTION 5271 SECOND QUESTION 4799 SECOND QUESTION 21521 FIRST QUESTION 66767 QUESTION 24897 FIRST QUESTION 69127 QUESTION 84527 QUESTION 23303 FIRST QUESTION 88924 QUESTION 56421 QUESTION 88108 QUESTION 74033 QUESTION...
output:
? 0 1 50000 ? 1 0 1 ! ! 1 ? 1 0 8466 ! 0 ! 1 ! 1 ? 1 0 5271 ! 0 ? 1 0 4799 ! 0 ? 1 0 21521 ! 1 ! 1 ? 1 0 24897 ! 1 ! 1 ! 1 ? 1 0 23303 ! 1 ! 1 ! 1 ! 1 ! 1 ? 1 0 25348 ! 1 ? 1 0 10105 ! 0 ! 1 ? 1 0 33359 ! 1 ? 1 0 49782 ! 1 ? 1 0 20392 ! 1 ! 1 ! 1 ? 1 0 4246 ! 0 ! 1 ? 1 0 8620 ! 0 ? 1 0 30435 ! 1 ? 1...
result:
ok Correct answer
Test #11:
score: 0
Accepted
time: 45ms
memory: 3480kb
input:
500 SECOND SECOND SECOND SECOND SECOND SECOND FIRST SECOND FIRST SECOND SECOND SECOND FIRST SECOND FIRST SECOND SECOND SECOND SECOND SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND FIRST SECO...
output:
? 110 290 50000 ? 290 110 1 ? 290 11 50000 ? 11 290 1 ? 110 290 25000 ? 290 110 1 ? 11 69 50000 ? 11 69 1 ? 290 69 25000 ? 290 69 1 ? 110 69 12500 ? 69 110 1 ? 11 209 50000 ? 11 209 1 ? 290 209 25000 ? 290 209 1 ? 69 209 12500 ? 209 69 1 ? 110 69 6250 ? 69 110 1 ? 11 468 50000 ? 11 468 1 ? 290 468 2...
result:
ok Correct answer
Test #12:
score: 0
Accepted
time: 17ms
memory: 3456kb
input:
500 SECOND SECOND FIRST SECOND SECOND SECOND FIRST SECOND FIRST SECOND SECOND FIRST SECOND SECOND FIRST FIRST FIRST SECOND FIRST SECOND SECOND FIRST SECOND FIRST FIRST SECOND FIRST SECOND SECOND SECOND FIRST SECOND FIRST FIRST SECOND SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST S...
output:
? 110 290 50000 ? 290 110 1 ? 290 11 50000 ? 290 11 1 ? 110 11 25000 ? 11 110 1 ? 290 69 50000 ? 290 69 1 ? 11 69 25000 ? 11 69 1 ? 110 69 12500 ? 69 110 1 ? 290 209 50000 ? 209 290 1 ? 11 290 25000 ? 11 290 1 ? 209 468 50000 ? 209 468 1 ? 11 468 25000 ? 11 468 1 ? 69 468 12500 ? 468 69 1 ? 110 69 1...
result:
ok Correct answer
Test #13:
score: 0
Accepted
time: 42ms
memory: 3504kb
input:
500 SECOND SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND SECOND SECOND FIRST SECOND FIRST SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND FIRST SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND FIRST SEC...
output:
? 110 290 50000 ? 290 110 1 ? 290 11 50000 ? 290 11 1 ? 110 11 25000 ? 110 11 1 ? 290 69 50000 ? 290 69 1 ? 110 69 25000 ? 110 69 1 ? 11 69 12500 ? 69 11 1 ? 290 209 50000 ? 290 209 1 ? 110 209 25000 ? 110 209 1 ? 69 209 12500 ? 209 69 1 ? 11 69 6250 ? 69 11 1 ? 290 468 50000 ? 468 290 1 ? 110 290 2...
result:
ok Correct answer
Test #14:
score: 0
Accepted
time: 25ms
memory: 3476kb
input:
500 SECOND SECOND FIRST SECOND SECOND SECOND SECOND SECOND SECOND SECOND FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST SECOND FIRST SECOND FIRST FIRST FIRST FIRST FIRST SECOND FIRST FIRST SECOND FIRST FIRST SECOND FIRST SECOND...
output:
? 110 290 50000 ? 290 110 1 ? 290 11 50000 ? 290 11 1 ? 110 11 25000 ? 11 110 1 ? 290 69 50000 ? 69 290 1 ? 11 290 25000 ? 290 11 1 ? 110 11 12500 ? 110 11 1 ? 69 209 50000 ? 69 209 1 ? 290 209 25000 ? 290 209 1 ? 110 209 12500 ? 110 209 1 ? 69 468 50000 ? 69 468 1 ? 69 17 50000 ? 69 17 1 ? 290 17 2...
result:
ok Correct answer
Test #15:
score: 0
Accepted
time: 17ms
memory: 3452kb
input:
500 SECOND SECOND FIRST SECOND FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST SECOND SECOND FIRST SECOND FIRST FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST FIRST FIRST FIRST FIRST SECOND FIRST SECOND FIRST FIRST FIRST SECOND SECOND SECOND FIRST FIRST FIRST FIRST FIRST SECOND FI...
output:
? 110 290 50000 ? 290 110 1 ? 290 11 50000 ? 290 11 1 ? 110 11 25000 ? 110 11 1 ? 290 69 50000 ? 290 69 1 ? 110 69 25000 ? 110 69 1 ? 290 209 50000 ? 290 209 1 ? 110 209 25000 ? 110 209 1 ? 11 209 37500 ? 209 11 25001 ? 290 468 50000 ? 290 468 1 ? 110 468 25000 ? 110 468 1 ? 209 468 37500 ? 209 468 ...
result:
ok Correct answer
Test #16:
score: 0
Accepted
time: 26ms
memory: 3464kb
input:
500 SECOND SECOND FIRST SECOND SECOND SECOND FIRST SECOND FIRST SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND SECOND FIRST SECOND FIRST SECOND FIRST SECOND SECOND FIRST FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND FIRST SECOND SEC...
output:
? 110 290 50000 ? 290 110 1 ? 290 11 50000 ? 290 11 1 ? 110 11 25000 ? 11 110 1 ? 290 69 50000 ? 290 69 1 ? 11 69 25000 ? 11 69 1 ? 110 69 12500 ? 69 110 1 ? 290 209 50000 ? 209 290 1 ? 11 290 25000 ? 290 11 1 ? 69 11 12500 ? 11 69 1 ? 110 69 6250 ? 69 110 1 ? 209 468 50000 ? 209 468 1 ? 290 468 250...
result:
ok Correct answer