QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#566264#8939. PermutationUNos_maricones#TL 0ms0kbC++231.6kb2024-09-15 23:35:012024-09-15 23:35:01

Judging History

This is the latest submission verdict.

  • [2024-09-15 23:35:01]
  • Judged
  • Verdict: TL
  • Time: 0ms
  • Memory: 0kb
  • [2024-09-15 23:35:01]
  • 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 ask(int l, int r){
  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 + 1.0)/(double)4);
  int q2 =l + (double)3 * ((double)r - (double)l + 1.0)/(double)4;
  if(p <= mita){
    int s = ask(l, mita);
    if(s == p){
      return solv(l, mita, p);
    }
    s = ask(p, q2);
    if(s == p){
      return solv(mita + 1, q2);
    }else{
      return solv(q2 + 1, r);
    }
  }else{

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

  }
}





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();
    int n;
    cin >> n;
    responder(solv(1, n));

  }


}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Time Limit Exceeded

input:

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

output:

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

result: