QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#566325#8939. PermutationUNos_maricones#WA 7ms3732kbC++231.7kb2024-09-15 23:49:312024-09-15 23:49:40

Judging History

This is the latest submission verdict.

  • [2024-09-15 23:49:40]
  • Judged
  • Verdict: WA
  • Time: 7ms
  • Memory: 3732kb
  • [2024-09-15 23:49:31]
  • Submitted

answer

#include<bits/stdc++.h>
#define ff first
#define ss second
#define ll long long
#define pb push_back
using namespace std;

map<pair<int, int>, int > respuestas;

int rangos = 0, n;

int ask(int l, int r){
  rangos += r - l + 1;
  assert(rangos <= 3* n);
  if(respuestas.count({l, r})){
    return respuestas[{l, r}];
  }
  cout << "? " << l << " " << r << endl;
  cout.flush();
  int answ;
  cin >> answ;
  respuestas[{l, r}] = answ;
  return answ;
}
void responder(int v){
  cout << "! " << v << endl;
  cout.flush();
}

int solv(int l, int r, int p);
int solv(int l, int r){
  if(l == r)return l;
  int p = ask(l, r);
  return solv(l, r, p);
}

int solv(int l, int r, int p){
  if(l == r)return l;
  if(p == l && r - l == 1)return r;
  if(p == r && r - l == 1)return l;
  int mita = (l + r )/2;

  int q1 =l + (((double)r - (double)l)/(double)4);
  int q2 =l + ceil((double)3 * ((double)r - (double)l)/(double)4);
  if(p <= mita){
    int s = ask(l, mita);
    if(s == p){
      return solv(l, mita, p);
    }
    q2 = (mita + 1 + r)/2;
    s = ask(p, q2);
    if(s == p){
      return solv(mita + 1, q2);
    }else{
      return solv(q2 + 1, r);
    }
  }else{

    int s = ask(mita + 1, r);
    if(s == p){
      return solv(mita + 1, r, p);
    }
    q1 = (l + mita + 1) / 2;
    s = ask(q1, p);
    if(s == p){
      return solv(q1, mita);
    }else{
      return solv(l, q1-1);
    }

  }
}





int main(){
  #ifdef LOCAL
  //freopen("in.txt", "r", stdin);
  #endif // LOCAL

  cin.tie(0);
  cout.tie(0);
  ios::sync_with_stdio(NULL);

  int t;
  cin >> t;
  while(t--){
      respuestas.clear();
    cin >> n;
    rangos = 0;
    responder(solv(1, n));

  }


}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

3
5
3
2
3
6
6
5
6
3
4
3
3

output:

? 1 5
? 1 3
? 3 4
! 4
? 1 6
? 4 6
? 2 6
? 2 3
! 2
? 1 4
? 3 4
! 4

result:

ok Correct (3 test cases)

Test #2:

score: -100
Wrong Answer
time: 7ms
memory: 3732kb

input:

10000
10
2
2
3
2
10
10
10
9
7
10
5
1
5
6
6
10
4
4
5
4
2
10
10
6
3
2
10
3
3
3

output:

? 1 10
? 1 5
? 1 3
? 2 4
! 4
? 1 10
? 6 10
? 9 10
? 7 10
! 6
? 1 10
? 1 5
? 5 8
? 6 8
? 6 7
! 7
? 1 10
? 1 5
? 4 5
? 2 4
? 2 3
! 3
? 1 10
? 6 10
? 3 10
? 1 2
! 1
? 1 10
? 1 5
? 1 3
? 3 3

result:

wrong answer Integer 3 violates the range [4, 10] (test case 6)