# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
315031 | 2020-10-22T01:01:55 Z | thtsshz_bgwrswh | CONSUL (info1cup19_consul) | C++17 | 0 ms | 0 KB |
#pragma GCC optimize("Ofast") #include "grader.h" #include<algorithm> #include<random> #include<vector> #include<utility> #include<map> using namespace std; int order[1005]; map<int,int> m; vector<pair<int,int>> q; void solve(int n){ int i; for(i=0;i<n;i++) order[i]=i; random_shuffle(order,order+n); for(i=0;i<40;i++) m[kth(order[i])]++; for(auto x:m) q.emplace_back(m.second,m.first); sort(q.begin(),q.end()); reverse(q.begin(),q.end()); if(n<=50){ int ans=0,v; for(i=0;i<10&&i<(int)q.size();i++){ int temp=cnt(q[i].second); if(temp>ans){ ans=temp; v=q[i].second; } } if(ans>n/3) say_answer(v); else say_answer(-1); } else{ int ans=0,v; for(i=0;i<20&&i<(int)q.size();i++){ int temp=cnt(q[i].second); if(temp>ans){ ans=temp; v=q[i].second; } } if(ans>n/3) say_answer(v); else say_answer(-1); } }