QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#113914 | #866. Display of Springs | Hongzy | TL | 18ms | 3552kb | C++14 | 1.8kb | 2023-06-20 01:13:26 | 2023-06-20 01:13:38 |
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 m1 = Min(id[u], cur, l);
int m2 = Min(id[u], cur, r);
if(m1 == id[u] && m2 == id[u]) return ;
if(m1 == cur && m2 == cur) {
id[u] = cur;
return ;
}
int mid = (l + r) >> 1;
if(Min(id[u], cur, mid) == cur) {
if(m1 == id[u]) modify(u << 1, l, mid, id[u]);
else modify(u << 1 | 1, mid + 1, r, id[u]);
id[u] = cur;
} else {
if(m1 == 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: 1ms
memory: 3548kb
input:
3 SECOND SECOND SECOND FIRST FIRST QUESTION 2 SECOND QUESTION 6 FIRST FINISH
output:
? 0 2 1 ? 0 2 100000 ? 2 1 1 ? 2 1 100000 ? 2 1 50000 ! ? 2 1 2 ! 1 ? 2 1 6 ! 2
result:
ok Correct answer
Test #2:
score: 0
Accepted
time: 2ms
memory: 3528kb
input:
6 SECOND FIRST FIRST SECOND FIRST FIRST SECOND FIRST FIRST SECOND FIRST FIRST SECOND FIRST FIRST FIRST SECOND SECOND SECOND FIRST FIRST SECOND FIRST FIRST SECOND FIRST FIRST EQUAL FIRST FIRST FIRST SECOND SECOND FIRST SECOND SECOND FIRST SECOND SECOND FIRST SECOND SECOND EQUAL SECOND QUESTION 1 SECO...
output:
? 4 3 1 ? 4 3 100000 ? 4 3 50000 ? 4 1 1 ? 4 1 100000 ? 4 1 50000 ? 3 1 1 ? 3 1 50000 ? 3 1 25000 ? 4 2 1 ? 4 2 100000 ? 4 2 50000 ? 3 2 1 ? 3 2 50000 ? 3 2 25000 ? 1 2 1 ? 1 2 25000 ? 1 2 12500 ? 4 0 1 ? 4 0 100000 ? 4 0 50000 ? 3 0 1 ? 3 0 50000 ? 3 0 25000 ? 2 0 1 ? 2 0 25000 ? 2 0 12500 ? 1 0 1 ...
result:
ok Correct answer
Test #3:
score: 0
Accepted
time: 11ms
memory: 3476kb
input:
326 FIRST FIRST FIRST FIRST SECOND FIRST FIRST SECOND FIRST FIRST SECOND SECOND SECOND FIRST FIRST SECOND SECOND SECOND FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST FIRST FIRST FIRST FIRST FIRST SECOND FIRST FIRST SEC...
output:
? 110 290 1 ? 110 290 100000 ? 110 11 1 ? 110 11 100000 ? 110 69 1 ? 110 69 100000 ? 110 69 50000 ? 110 209 1 ? 110 209 100000 ? 110 209 50000 ? 69 209 1 ? 69 209 50000 ? 110 142 1 ? 110 142 100000 ? 110 142 50000 ? 209 142 1 ? 209 142 50000 ? 110 17 1 ? 110 17 100000 ? 110 17 50000 ? 142 17 1 ? 142...
result:
ok Correct answer
Test #4:
score: 0
Accepted
time: 15ms
memory: 3536kb
input:
19 SECOND FIRST FIRST FIRST SECOND SECOND FIRST SECOND SECOND SECOND SECOND FIRST FIRST SECOND SECOND SECOND SECOND FIRST FIRST FIRST FIRST SECOND SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND SECOND FIRST FIRST FIRST FIRST FIRST FIRST QUESTION 87421 QUESTION 49361 FIRST ...
output:
? 4 10 1 ? 4 10 100000 ? 4 10 50000 ? 4 11 1 ? 4 11 100000 ? 4 11 50000 ? 10 4 1 ? 10 4 50000 ? 10 4 25000 ? 11 15 1 ? 11 15 100000 ? 15 14 1 ? 15 14 100000 ? 15 16 1 ? 15 16 100000 ? 16 17 1 ? 16 17 100000 ? 17 1 1 ? 17 1 100000 ? 17 6 1 ? 17 6 100000 ? 17 9 1 ? 17 9 100000 ? 9 3 1 ? 9 3 100000 ? 9...
result:
ok Correct answer
Test #5:
score: 0
Accepted
time: 18ms
memory: 3448kb
input:
500 FIRST FIRST FIRST FIRST FIRST SECOND SECOND FIRST FIRST FIRST FIRST SECOND SECOND SECOND SECOND FIRST FIRST FIRST FIRST SECOND SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST ...
output:
? 110 290 1 ? 110 290 100000 ? 110 11 1 ? 110 11 100000 ? 110 69 1 ? 110 69 100000 ? 110 69 50000 ? 69 209 1 ? 69 209 100000 ? 69 468 1 ? 69 468 100000 ? 69 17 1 ? 69 17 100000 ? 17 293 1 ? 17 293 100000 ? 293 164 1 ? 293 164 100000 ? 293 350 1 ? 293 350 100000 ? 293 115 1 ? 293 115 100000 ? 115 322...
result:
ok Correct answer
Test #6:
score: 0
Accepted
time: 7ms
memory: 3448kb
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 1 ? 110 290 100000 ? 290 11 1 ? 290 11 100000 ? 11 69 1 ? 11 69 100000 ? 69 209 1 ? 69 209 100000 ? 209 468 1 ? 209 468 100000 ? 468 17 1 ? 468 17 100000 ? 17 293 1 ? 17 293 100000 ? 293 164 1 ? 293 164 100000 ? 164 350 1 ? 164 350 100000 ? 350 115 1 ? 350 115 100000 ? 115 322 1 ? 115 322 ...
result:
ok Correct answer
Test #7:
score: 0
Accepted
time: 9ms
memory: 3552kb
input:
500 SECOND SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST ...
output:
? 110 290 1 ? 110 290 100000 ? 290 11 1 ? 290 11 100000 ? 290 69 1 ? 290 69 100000 ? 290 209 1 ? 290 209 100000 ? 290 468 1 ? 290 468 100000 ? 290 17 1 ? 290 17 100000 ? 290 293 1 ? 290 293 100000 ? 290 164 1 ? 290 164 100000 ? 290 350 1 ? 290 350 100000 ? 290 115 1 ? 290 115 100000 ? 290 322 1 ? 29...
result:
ok Correct answer
Test #8:
score: 0
Accepted
time: 6ms
memory: 3480kb
input:
500 FIRST FIRST SECOND SECOND SECOND SECOND FIRST FIRST SECOND SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND SECOND FIRST FIRST SECOND SECOND FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST FIRST SECOND SECOND FIRST FIRST FIRST FI...
output:
? 110 290 1 ? 110 290 100000 ? 110 11 1 ? 110 11 100000 ? 11 69 1 ? 11 69 100000 ? 69 209 1 ? 69 209 100000 ? 69 468 1 ? 69 468 100000 ? 468 17 1 ? 468 17 100000 ? 468 293 1 ? 468 293 100000 ? 468 164 1 ? 468 164 100000 ? 468 350 1 ? 468 350 100000 ? 468 115 1 ? 468 115 100000 ? 468 322 1 ? 468 322 ...
result:
ok Correct answer
Test #9:
score: 0
Accepted
time: 6ms
memory: 3440kb
input:
2 FIRST 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...
output:
? 0 1 1 ? 0 1 100000 ? 0 1 50000 ! ! 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...
result:
ok Correct answer
Test #10:
score: 0
Accepted
time: 7ms
memory: 3468kb
input:
2 FIRST 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 QU...
output:
? 0 1 1 ? 0 1 100000 ? 0 1 50000 ! ! 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 ...
result:
ok Correct answer
Test #11:
score: -100
Time Limit Exceeded
input:
500 FIRST SECOND SECOND FIRST SECOND SECOND FIRST SECOND SECOND SECOND FIRST FIRST SECOND FIRST FIRST FIRST SECOND SECOND SECOND FIRST FIRST SECOND FIRST FIRST FIRST SECOND SECOND FIRST SECOND SECOND SECOND FIRST FIRST SECOND FIRST FIRST SECOND FIRST FIRST SECOND FIRST FIRST FIRST SECOND SECOND FIRS...
output:
? 110 290 1 ? 110 290 100000 ? 110 290 50000 ? 290 11 1 ? 290 11 100000 ? 290 11 50000 ? 110 290 1 ? 110 290 50000 ? 110 290 25000 ? 11 69 1 ? 11 69 100000 ? 11 69 50000 ? 290 69 1 ? 290 69 50000 ? 290 69 25000 ? 110 69 1 ? 110 69 25000 ? 110 69 12500 ? 11 209 1 ? 11 209 100000 ? 11 209 50000 ? 290 ...