QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#113896#866. Display of SpringsHongzyTL 21ms3528kbC++142.0kb2023-06-19 23:41:042023-06-19 23:41:06

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-19 23:41:06]
  • 评测
  • 测评结果:TL
  • 用时:21ms
  • 内存:3528kb
  • [2023-06-19 23:41:04]
  • 提交

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;

#define fs first
#define sc second
#define pb push_back
#define mp make_pair

using db = double;
using ll = long long;
using uint = unsigned int;
using ull = unsigned long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

const int N = 1e5 + 5, M = 100000;
const int mod = 1e9 + 7;

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() {
  int n;
  cin >> n;
  rep(i, 1, n) {
    modify(1, 1, M, 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;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

3
SECOND
SECOND
FIRST
SECOND
SECOND
QUESTION 2
SECOND
QUESTION 6
FIRST
FINISH

output:

? 0 1 1
? 0 1 100000
? 1 2 1
? 1 2 100000
? 1 2 50000
!
? 2 1 2
! 1
? 2 1 6
! 2

result:

ok Correct answer

Test #2:

score: 0
Accepted
time: 3ms
memory: 3496kb

input:

6
EQUAL
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
QUESTION 1
SECOND
SECOND
SECOND
SECOND
QUESTION 2
SECOND
SECOND
SECOND
EQUAL
QUESTION...

output:

? 0 1 1
? 0 1 100000
? 1 2 1
? 1 2 100000
? 1 2 50000
? 2 3 1
? 2 3 100000
? 2 3 50000
? 1 2 1
? 1 2 50000
? 1 2 25000
? 3 4 1
? 3 4 100000
? 3 4 50000
? 2 3 1
? 2 3 50000
? 2 3 25000
? 1 2 1
? 1 2 25000
? 1 2 12500
? 4 5 1
? 4 5 100000
? 4 5 50000
? 3 4 1
? 3 4 50000
? 3 4 25000
? 2 3 1
? 2 3 25000...

result:

ok Correct answer

Test #3:

score: 0
Accepted
time: 15ms
memory: 3456kb

input:

326
FIRST
FIRST
SECOND
FIRST
FIRST
FIRST
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
FIRST
FIRST
SECOND
FIRST
FIRST
SECOND
SECOND
FIRST
FIRST
SECOND
FIRST
FIRST
FIRST
FIRST
SECOND
FIRST
FIRST
FIRST
FIRST
SECOND
SECOND
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
SECOND
FIRST
FIRST
SECOND
SECOND
FIRS...

output:

? 0 1 1
? 0 1 100000
? 0 2 1
? 0 2 100000
? 0 2 50000
? 0 3 1
? 0 3 100000
? 0 3 50000
? 2 0 1
? 2 0 50000
? 2 0 25000
? 3 4 1
? 3 4 100000
? 3 4 50000
? 0 4 1
? 0 4 50000
? 0 4 25000
? 2 4 1
? 2 4 25000
? 3 5 1
? 3 5 100000
? 3 6 1
? 3 6 100000
? 3 6 50000
? 0 6 1
? 0 6 50000
? 3 7 1
? 3 7 100000
?...

result:

ok Correct answer

Test #4:

score: 0
Accepted
time: 0ms
memory: 3420kb

input:

19
SECOND
SECOND
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
SECOND
SECOND
FIRST
FIRST
SECOND
SECOND
SECOND
SECOND
FIRST
FIRST
FIRST
FIRST
SECOND
SECOND
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
QUESTION 87421
QUESTION 49361
FIRST
QUESTION 69685
QUESTION 92972...

output:

? 0 1 1
? 0 1 100000
? 1 2 1
? 1 2 100000
? 1 3 1
? 1 3 100000
? 1 4 1
? 1 4 100000
? 1 5 1
? 1 5 100000
? 1 6 1
? 1 6 100000
? 1 6 50000
? 6 7 1
? 6 7 100000
? 6 8 1
? 6 8 100000
? 8 9 1
? 8 9 100000
? 9 10 1
? 9 10 100000
? 9 11 1
? 9 11 100000
? 9 12 1
? 9 12 100000
? 12 13 1
? 12 13 100000
? 12 ...

result:

ok Correct answer

Test #5:

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

input:

500
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
FIRST
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
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
...

output:

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

result:

ok Correct answer

Test #6:

score: 0
Accepted
time: 9ms
memory: 3496kb

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:

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

result:

ok Correct answer

Test #7:

score: 0
Accepted
time: 17ms
memory: 3424kb

input:

500
SECOND
SECOND
FIRST
FIRST
SECOND
SECOND
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
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
SE...

output:

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

result:

ok Correct answer

Test #8:

score: 0
Accepted
time: 11ms
memory: 3496kb

input:

500
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
FIRST
FIRST
FI...

output:

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

result:

ok Correct answer

Test #9:

score: 0
Accepted
time: 0ms
memory: 3464kb

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: 5ms
memory: 3528kb

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

output:

? 0 1 1
? 0 1 100000
? 0 1 50000
? 0 2 1
? 0 2 100000
? 0 2 50000
? 1 0 1
? 1 0 50000
? 1 0 25000
? 2 3 1
? 2 3 100000
? 2 3 50000
? 0 3 1
? 0 3 50000
? 0 3 25000
? 1 0 1
? 1 0 25000
? 1 0 12500
? 2 4 1
? 2 4 100000
? 2 4 50000
? 3 2 1
? 3 2 50000
? 3 2 25000
? 0 3 1
? 0 3 25000
? 0 3 12500
? 1 0 1
...

result: