QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#113914#866. Display of SpringsHongzyTL 18ms3552kbC++141.8kb2023-06-20 01:13:262023-06-20 01:13:38

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-06-20 01:13:38]
  • 评测
  • 测评结果:TL
  • 用时:18ms
  • 内存:3552kb
  • [2023-06-20 01:13:26]
  • 提交

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 ...

result: