제출 #486317

#제출 시각아이디문제언어결과실행 시간메모리
486317NintsiChkhaidzeCONSUL (info1cup19_consul)C++14
100 / 100
31 ms200 KiB
#include <bits/stdc++.h>
#include "grader.h"
 
using namespace std;
 
int kth(int k);
void say_answer(int k);
int cnt(int k);
map <int,int> mp;
 
void solve(int n){    
     if (n<=50){
        mp.clear();
        for (int i = 1; i <= n; i++){
            int val = kth(i);
            mp[val]++;
            if (mp[val] > n/3){
                say_answer(val);
                return;
            }
        }
        say_answer(-1);
        return;
    }
    
    int r=0;
    set <int> st; st.clear();
    for (int i = 1; i <= n; i++){
        int val = kth(rand()%n + 1);
        r++;
        if (r == 60) break;
        if (st.find(val) != st.end())
            continue;
        
        st.insert(val);
        if (cnt(val) > n/3){
            say_answer(val);
            return;
        }
        r++;
        if (r == 60) break;
    }
    
    say_answer(-1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...