Submission #1164695

#TimeUsernameProblemLanguageResultExecution timeMemory
1164695SmuggingSpun커다란 상품 (IOI17_prize)C++20
96.96 / 100
21 ms11368 KiB
#include<bits/stdc++.h>
#include "prize.h"
using namespace std;
const int SIZE = 450;
int find_best(int n) {
    vector<vector<int>>cnt(n, vector<int>(2, -1));
    auto id = [&] (int i){
        if(cnt[i][0] != -1){
            return cnt[i];
        }
        return cnt[i] = ask(i);
    };
    for(int i = 0; i < n; ){
        if(id(i)[0] == 0 && id(i)[1] == 0){
            return i;
        }
        if(id(i) != id(i + 1)){
            i++;
        }
        else{
            while(true){
                int j = min(n - 1, i + SIZE);
                if(id(i) == id(j)){
                    i = j;
                }
                else{
                    int low = i + 2, high = j - 1;
                    while(low <= high){
                        int mid = (low + high) >> 1;
                        if(id(i) != id(mid)){
                            high = (j = mid) - 1;
                        }
                        else{
                            low = mid + 1;
                        }
                    }
                    i = j;
                    break;
                }
            }
        }
    }
}

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:43:1: warning: control reaches end of non-void function [-Wreturn-type]
   43 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...