Submission #969117

#TimeUsernameProblemLanguageResultExecution timeMemory
969117bachhoangxuanCONSUL (info1cup19_consul)C++17
85 / 100
13 ms448 KiB
#include "grader.h"
#include<bits/stdc++.h>
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

void solve(int n)
{
    vector<int> p(n);
    iota(p.begin(),p.end(),1);
    shuffle(p.begin(),p.end(),rng);
    if(n<=60){
        map<int,int> mp;
        for(int i=1;i<=n;i++) mp[kth(i)]++;
        for(auto [x,val]:mp){
            if(3*val>n){
                say_answer(x);
                return;
            }
        }
        say_answer(-1);
    }
    set<int> ss;
    int num=0;
    for(int i=0;i<n && num<60;i++){
        int x=p[i];
        int k=kth(x);num++;
        if(ss.find(k)!=ss.end()) continue;
        if(num==60) break;
        int d=cnt(k);num++;
        if(3*d>n){
            say_answer(k);
            return;
        }
        ss.insert(k);
    }
    say_answer(-1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...