QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#202993#866. Display of SpringsisaunoyaAC ✓36ms5188kbC++233.1kb2023-10-06 14:30:362023-10-06 14:30:37

Judging History

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

  • [2023-10-06 14:30:37]
  • 评测
  • 测评结果:AC
  • 用时:36ms
  • 内存:5188kb
  • [2023-10-06 14:30:36]
  • 提交

answer

#include <bits/stdc++.h>
#ifndef LOCAL
#define debug(...) 42
#else
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#endif
#define rep1(a) for (int i = 0; i < a; i++)
#define rep2(i, a) for (int i = 0; i < a; i++)
#define rep3(i, a, b) for (int i = a; i < b; i++)
#define rep4(i, a, b, c) for (int i = a; i < b; i += c)
#define overload4(a, b, c, d, e, ...) e
#define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__)

#define pb emplace_back
using namespace std;
template <typename T, typename T2> void cmin(T &x, const T2 &y) {
  x = x < y ? x : y;
}
template <typename T, typename T2> void cmax(T &x, const T2 &y) {
  x = x > y ? x : y;
}
using ll = long long;
using vi = vector<int>;
using pii = pair<int, int>;
template <class T> using vc = vector<T>;
template <class T> using pq = priority_queue<T>;
template <class T> using pqg = priority_queue<T, vector<T>, greater<T>>;
mt19937 rng(time(NULL));
const int inf = 1000000000;
const ll lnf = 1000000000000000000;
#define sz(x) int((x).size())
#define all(x) begin(x), end(x)
#define fi first
#define se second

int get(int a, int b, int w) {
  if (a == -1) {
    return b;
  }
  if (b == -1) {
    return a;
  }
  cout << "? " << a << " " << b << " " << w << endl;
  string s;
  cin >> s;
  if (s == "FIRST") {
    return a;
  } else {
    return b;
  }
}

const int N = 1e5;
int id[N * 4];
void update(int l, int r, int p, int x) {
  if (id[p] == -1) {
    id[p] = x;
    return;
  }
  if (get(id[p], x, l) == x) {
    swap(id[p],x);
  }
  if (l == r) {
    return;
  }
  int m = (l + r) / 2;
  if(get(id[p],x,m)==x)
    update(l,m,p*2,id[p]),id[p]=x;
  else
    update(m+1,r,p*2+1,x);
  // int ql = get(id[p], x, l);
  // int qr = get(id[p], x, r);
  // if (ql == id[p] && qr == id[p]) {
  //   return;
  // }
  // if (ql == x && qr == x) {
  //   id[p] = x;
  //   return;
  // }
  // int qm = get(id[p], x, m);
  // if (qm == x) {
  //   int y = id[p];
  //   id[p] = x;
  //   if (ql == y)
  //     update(l, m, p * 2, y);
  //   if (qr == y)
  //     update(m + 1, r, p * 2 + 1, y);
  //   return;
  // }
  // if (qm == id[p]) {
  //   if (ql == x) 
  //     update(l, m, p * 2, x);
  //   if (qr == x)
  //     update(m + 1, r, p * 2 + 1, x);
  //   return;
  // }
}
int query(int l, int r, int p, int x) {
  if (l == r) {
    return id[p];
  }
  int m = (l + r) / 2;
  int y;
  if (x <= m)
    y = query(l, m, p * 2, x);
  else
    y = query(m + 1, r, p * 2 + 1, x);
  return get(id[p], y, x);
}

void solve() {
  memset(id, -1, sizeof id);
  int n;
  cin >> n;
  for (int b = 0; b < n; b++) {
    update(1, N, 1, b);
  }
  cout << "!" << endl;
  while (true) {
    string s;
    cin >> s;
    if (s == "QUESTION") {
      int x;
      cin >> x;
      int y = query(1, N, 1, x);
      cout << "! " << y << endl;
    } else {
      return;
    }
  }
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int t = 1;
  // cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 5040kb

input:

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

output:

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

result:

ok Correct answer

Test #2:

score: 0
Accepted
time: 1ms
memory: 5100kb

input:

6
EQUAL
FIRST
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
QUESTION 1
SECOND
SECOND
SECOND
SECOND
QUESTION 2
EQUAL
SECOND
SECOND
SECOND
QUESTION 3
FIRST
EQUAL
SECOND
SECOND
QUESTION 4
FIRST
FIRST
EQUAL
SECOND
QUESTI...

output:

? 0 1 1
? 1 0 50000
? 1 2 1
? 1 2 50000
? 2 3 1
? 2 3 50000
? 1 2 1
? 1 2 25000
? 3 4 1
? 3 4 50000
? 2 3 1
? 2 3 25000
? 1 2 1
? 1 2 12500
? 4 5 1
? 4 5 50000
? 3 4 1
? 3 4 25000
? 2 3 1
? 2 3 12500
? 1 2 1
? 1 2 6250
!
? 2 1 1
? 3 1 1
? 4 1 1
? 5 1 1
! 1
? 2 1 2
? 3 1 2
? 4 1 2
? 5 1 2
! 1
? 2 1 3...

result:

ok Correct answer

Test #3:

score: 0
Accepted
time: 5ms
memory: 5124kb

input:

326
FIRST
FIRST
SECOND
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
FIRST
FIRST
FIRST
FIRST
SECOND
SECOND
FIRST
FIRST
SECOND
SECOND
FIRST
FIRST
FIRST
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
FIRST
FIRST
FIRST
FIRST
SECOND
FIRST
SECOND
FIRST
FIRST
FIRST
SECOND
FIRST
S...

output:

? 0 1 1
? 0 1 50000
? 0 2 1
? 2 0 50000
? 0 3 1
? 0 3 50000
? 2 0 1
? 2 0 25000
? 3 4 1
? 4 3 50000
? 0 4 1
? 4 0 25000
? 2 4 1
? 4 2 12500
? 3 5 1
? 3 5 50000
? 1 5 50001
? 1 5 75000
? 3 6 1
? 6 3 50000
? 0 6 1
? 0 6 25000
? 3 7 1
? 7 3 50000
? 0 7 1
? 0 7 25000
? 6 7 25001
? 6 7 37500
? 3 8 1
? 8 ...

result:

ok Correct answer

Test #4:

score: 0
Accepted
time: 2ms
memory: 5120kb

input:

19
SECOND
FIRST
FIRST
FIRST
SECOND
FIRST
FIRST
FIRST
SECOND
FIRST
SECOND
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
SECOND
FIRST
SECOND
FIRST
FIRST
SECOND
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST...

output:

? 0 1 1
? 1 0 50000
? 1 2 1
? 1 2 50000
? 0 2 50001
? 2 0 75000
? 1 3 1
? 1 3 50000
? 2 3 50001
? 3 2 75000
? 0 2 75001
? 2 0 87500
? 1 4 1
? 1 4 50000
? 3 4 50001
? 3 4 75000
? 2 4 75001
? 2 4 87500
? 0 4 87501
? 0 4 93750
? 1 5 1
? 1 5 50000
? 3 5 50001
? 3 5 75000
? 2 5 75001
? 2 5 87500
? 0 5 87...

result:

ok Correct answer

Test #5:

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

input:

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

output:

? 0 1 1
? 1 0 50000
? 1 2 1
? 2 1 50000
? 0 1 50001
? 1 0 75000
? 2 3 1
? 3 2 50000
? 1 2 50001
? 2 1 75000
? 0 1 75001
? 1 0 87500
? 3 4 1
? 3 4 50000
? 2 4 50001
? 2 4 75000
? 1 4 75001
? 1 4 87500
? 0 4 87501
? 4 0 93750
? 3 5 1
? 3 5 50000
? 2 5 50001
? 2 5 75000
? 1 5 75001
? 1 5 87500
? 4 5 87...

result:

ok Correct answer

Test #6:

score: 0
Accepted
time: 18ms
memory: 5096kb

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
? 1 0 50000
? 0 2 1
? 2 0 50000
? 1 2 1
? 2 1 25000
? 0 3 1
? 3 0 50000
? 1 3 1
? 3 1 25000
? 2 3 1
? 3 2 12500
? 0 4 1
? 4 0 50000
? 1 4 1
? 4 1 25000
? 2 4 1
? 4 2 12500
? 3 4 1
? 4 3 6250
? 0 5 1
? 5 0 50000
? 1 5 1
? 5 1 25000
? 2 5 1
? 5 2 12500
? 3 5 1
? 5 3 6250
? 4 5 1
? 5 4 3125
? 0...

result:

ok Correct answer

Test #7:

score: 0
Accepted
time: 4ms
memory: 5092kb

input:

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

output:

? 0 1 1
? 1 0 50000
? 1 2 1
? 1 2 50000
? 0 2 50001
? 0 2 75000
? 1 3 1
? 3 1 50000
? 0 1 50001
? 1 0 75000
? 2 0 75001
? 0 2 87500
? 3 4 1
? 3 4 50000
? 1 4 50001
? 1 4 75000
? 0 4 75001
? 0 4 87500
? 2 4 87501
? 4 2 93750
? 3 5 1
? 3 5 50000
? 1 5 50001
? 1 5 75000
? 0 5 75001
? 0 5 87500
? 4 5 87...

result:

ok Correct answer

Test #8:

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

input:

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

output:

? 0 1 1
? 0 1 50000
? 0 2 1
? 0 2 50000
? 1 2 50001
? 2 1 75000
? 0 3 1
? 0 3 50000
? 2 3 50001
? 2 3 75000
? 1 3 75001
? 3 1 87500
? 0 4 1
? 0 4 50000
? 2 4 50001
? 2 4 75000
? 3 4 75001
? 3 4 87500
? 1 4 87501
? 4 1 93750
? 0 5 1
? 0 5 50000
? 2 5 50001
? 2 5 75000
? 3 5 75001
? 3 5 87500
? 4 5 87...

result:

ok Correct answer

Test #9:

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

input:

2
FIRST
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 1
? 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
! 1
! 1
! 1
...

result:

ok Correct answer

Test #10:

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

input:

2
FIRST
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 1
? 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 30435
! 1
? 1...

result:

ok Correct answer

Test #11:

score: 0
Accepted
time: 13ms
memory: 5100kb

input:

500
SECOND
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
F...

output:

? 0 1 1
? 1 0 50000
? 0 2 1
? 0 2 50000
? 1 0 1
? 1 0 25000
? 2 3 1
? 3 2 50000
? 0 3 1
? 0 3 25000
? 1 0 1
? 1 0 12500
? 2 4 1
? 2 4 50000
? 3 2 1
? 3 2 25000
? 0 3 1
? 0 3 12500
? 1 0 1
? 1 0 6250
? 4 5 1
? 5 4 50000
? 2 5 1
? 2 5 25000
? 3 2 1
? 3 2 12500
? 0 3 1
? 0 3 6250
? 1 0 1
? 1 0 3125
? 4...

result:

ok Correct answer

Test #12:

score: 0
Accepted
time: 5ms
memory: 5124kb

input:

500
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
FIRST
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND...

output:

? 0 1 1
? 0 1 50000
? 1 2 1
? 1 2 50000
? 0 1 1
? 0 1 25000
? 2 3 1
? 3 2 50000
? 1 3 1
? 1 3 25000
? 0 1 1
? 0 1 12500
? 2 4 1
? 4 2 50000
? 3 4 1
? 4 3 25000
? 1 4 1
? 4 1 12500
? 2 5 1
? 5 2 50000
? 3 5 1
? 5 3 25000
? 4 5 1
? 4 5 12500
? 1 5 12501
? 5 1 18750
? 2 6 1
? 6 2 50000
? 3 6 1
? 6 3 25...

result:

ok Correct answer

Test #13:

score: 0
Accepted
time: 36ms
memory: 5120kb

input:

500
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
S...

output:

? 0 1 1
? 0 1 50000
? 1 2 1
? 1 2 50000
? 0 1 1
? 0 1 25000
? 2 3 1
? 3 2 50000
? 1 3 1
? 3 1 25000
? 0 3 1
? 0 3 12500
? 2 4 1
? 4 2 50000
? 1 4 1
? 4 1 25000
? 3 4 1
? 4 3 12500
? 0 4 1
? 0 4 6250
? 2 5 1
? 5 2 50000
? 1 5 1
? 5 1 25000
? 3 5 1
? 5 3 12500
? 4 5 1
? 5 4 6250
? 0 5 1
? 5 0 3125
? 2...

result:

ok Correct answer

Test #14:

score: 0
Accepted
time: 8ms
memory: 5096kb

input:

500
FIRST
SECOND
SECOND
SECOND
FIRST
SECOND
FIRST
FIRST
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
FIRST
SECOND
SECOND
SECOND
SECOND
FIRST
FIRST
SECOND
SECOND
FIRST
SECOND
FIRST
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
FIRST
FIRST
SEC...

output:

? 0 1 1
? 0 1 50000
? 1 2 1
? 2 1 50000
? 0 2 1
? 0 2 25000
? 1 3 1
? 1 3 50000
? 1 4 1
? 4 1 50000
? 2 4 1
? 4 2 25000
? 0 4 1
? 0 4 12500
? 1 5 1
? 5 1 50000
? 2 5 1
? 5 2 25000
? 4 5 1
? 4 5 12500
? 1 6 1
? 6 1 50000
? 2 6 1
? 6 2 25000
? 4 6 1
? 4 6 12500
? 5 6 12501
? 6 5 18750
? 1 7 1
? 1 7 50...

result:

ok Correct answer

Test #15:

score: 0
Accepted
time: 10ms
memory: 5040kb

input:

500
FIRST
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
FIRST
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
F...

output:

? 0 1 1
? 0 1 50000
? 1 2 1
? 1 2 50000
? 0 1 1
? 0 1 25000
? 2 3 1
? 3 2 50000
? 1 3 1
? 3 1 25000
? 0 3 1
? 0 3 12500
? 2 4 1
? 4 2 50000
? 1 4 1
? 4 1 25000
? 3 4 1
? 3 4 12500
? 0 3 1
? 0 3 6250
? 2 5 1
? 5 2 50000
? 1 5 1
? 5 1 25000
? 4 5 1
? 4 5 12500
? 3 4 1
? 3 4 6250
? 0 3 1
? 0 3 3125
? 2...

result:

ok Correct answer

Test #16:

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

input:

500
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
FIRST
SECOND
SECOND
FIRST
SECOND
FIRST
SECOND
FIRST
FIRST
FIRST
SECOND
SECOND
SECOND
SECOND
SECOND
SECOND
SECO...

output:

? 0 1 1
? 0 1 50000
? 1 2 1
? 2 1 50000
? 0 2 1
? 2 0 25000
? 1 3 1
? 3 1 50000
? 0 3 1
? 3 0 25000
? 2 3 1
? 2 3 12500
? 1 4 1
? 4 1 50000
? 0 4 1
? 4 0 25000
? 3 4 1
? 4 3 12500
? 2 4 1
? 2 4 6250
? 1 5 1
? 5 1 50000
? 0 5 1
? 5 0 25000
? 3 5 1
? 5 3 12500
? 4 5 1
? 5 4 6250
? 1 6 1
? 6 1 50000
? ...

result:

ok Correct answer