답안 #1074372

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1074372 2024-08-25T10:09:05 Z beaconmc Hotter Colder (IOI10_hottercolder) C++14
51.8519 / 100
2264 ms 8100 KB
#include "grader.h"
#include <bits/stdc++.h>

typedef long long ll;

#define FOR(i,x,y) for(ll i=x; i<y; i++)
#define FORNEG(i,x,y) for(lli = x; i>y; i--)
using namespace std;


ll n;
map<ll,ll> sus;
ll cnt = 0;
ll idkman = -1;
int guess(ll a){

   if (a==0) return -1;
   if (a==n+1) return -1;
   cnt++;
   idkman = a;
   return  Guess(a);

}
int solve(int a, int b){
   ll lmao = rand()%2;
   // cout << a << " " << b << endl;

   if (a==b) return a;
   if (idkman == (a+b)/2){
      // cout << "LMAO" << endl;
      ll mid = idkman;
      ll right = guess(idkman+1);
      if (right == -1){
         return solve(a, mid);
      }else{
         return solve(mid+1, b);
      }
   }
   else{

      if (lmao == 0){
         ll mid = (a+b)/2;
         ll midleft = (a+mid)/2;
         ll midright = (b+mid+1)/2;

         ll left, right;
         left = guess(midleft);
         right = guess(midright);
         if (right == 0 ){
            return (midleft+midright)/2;
         }
         else if (right == -1){
            if ((midleft+midright)%2==0)return solve(a, mid-1);
            else return solve(a,mid);
         }else{
            return solve(mid+1, b);
         }
      } else{
         ll mid = (a+b+1)/2;
         ll midleft = (a+mid)/2;
         ll midright = (b+mid+1)/2;

         ll left, right;
         right = guess(midright);
         left = guess(midleft);
         // cout << a << " " << b << " " << midleft << " " << midright << " " << left << " " << right << endl;

         if (left == 0 ){
            return (midleft+midright)/2;
         }
         else if (left == -1){
            if ((midleft+midright)%2==0) return solve(mid+1, b);
            else return solve(mid, b);
            
         }else{
            return solve(a, mid);

         }
      }


   }
}


int HC(int N){
   idkman = -1;
   srand(69420);
   sus.clear();
   n = N;
   cnt = 0;
   ll ans = solve(1,N);
   // cout << ans << " " << cnt << endl;
   return ans;
}

Compilation message

hottercolder.cpp: In function 'int solve(int, int)':
hottercolder.cpp:46:13: warning: variable 'left' set but not used [-Wunused-but-set-variable]
   46 |          ll left, right;
      |             ^~~~
hottercolder.cpp:63:19: warning: variable 'right' set but not used [-Wunused-but-set-variable]
   63 |          ll left, right;
      |                   ^~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 227 ms 6744 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 225 ms 2904 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 225 ms 3096 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 2264 ms 8100 KB Output is partially correct - alpha = 0.074074074074