Submission #150225

#TimeUsernameProblemLanguageResultExecution timeMemory
150225mit한의대지망생 (#200)Lokahian Relics (FXCUP4_lokahia)C++17
0 / 100
7 ms896 KiB
#include "lokahia.h" #include <algorithm> #include <vector> #include <set> #include <map> #include <cstdlib> using namespace std; int FindBase(int n) { if (n == 1) return 0; if (n <= 25) { map<int, vector<int>> mp; for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { int ret = CollectRelics(i, j); if (ret == -1) continue; mp[ret].push_back(i); mp[ret].push_back(j); } } for (auto it : mp) { vector<int> v = it.second; sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end()); if (v.size() >= n / 2) { return it.first; } } return -1; } srand(0x525252); vector<int> v; for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { v.push_back(i * n + j); } } random_shuffle(v.begin(), v.end()); map<int, set<int>> mp; int mxs = 0; for (int i = 0; i < 300 - (n - mxs) && i < v.size(); ++i) { int a = v[i] / n; int b = v[i] % n; int ret = CollectRelics(a, b); if (ret == -1) continue; mp[ret].insert(a); mp[ret].insert(b); mp[ret].insert(ret); mxs = max(mxs, (int)mp[ret].size()); } if (mp.empty()) return -1; int mxi = -1; set<int> sp; for (auto &it : mp) { if (it.second.size() == mxs) mxi = it.first, sp = it.second; } int cnt = 0; for (int i = 0; i < n; ++i) { if (sp.count(i) || CollectRelics(i, mxi) != -1) ++cnt; } if (cnt >= n / 2) return mxi; return -1; }

Compilation message (stderr)

lokahia.cpp: In function 'int FindBase(int)':
lokahia.cpp:26:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (v.size() >= n / 2) {
                 ~~~~~~~~~^~~~~~~~
lokahia.cpp:42:46: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < 300 - (n - mxs) && i < v.size(); ++i) {
                                            ~~^~~~~~~~~~
lokahia.cpp:56:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (it.second.size() == mxs) mxi = it.first, sp = it.second;
             ~~~~~~~~~~~~~~~~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...