Submission #1088580

#TimeUsernameProblemLanguageResultExecution timeMemory
1088580vjudge1Izbori (COCI17_izbori)C++17
80 / 80
46 ms6604 KiB
#include <bits/stdc++.h> #include <fstream> using namespace std; // #define int long long #define endl '\n' const int mxn = 501; const int mod = 1e8; // int dx[] = {0 , 0 , 1 , -1}; // int dy[] = {1 , -1 , 0 , 0}; //DFS //---------------------------------- // vector<int> adj[mxn]; // int n , m; // bool vis[mxn]; // int P[mxn]; // int rem[mxn]; // void dfs(int i){ // vis[i] = 1; // for(auto j : adj[i]){ // if(!vis[j]){ // P[j] = i; // dfs(j); // } // } // return; // } //---------------------------------- //Seg-Tree //---------------------------------- // int Tree[1 << (int)(ceil(log2(mxn))) + 1]; // int N = 1 << (int)(ceil(log2(mxn))); // int l ,r; // int Search(int i , int lr , int rr){ // if(lr >= l and rr <= r){ // return Tree[i]; // } // if(lr > r or rr < l) return -1; // return max(Search(i * 2 , lr , (lr + rr) / 2) , Search(i * 2 + 1 , (lr + rr) / 2 + 1 , rr)); // } // void update(int i){ // while(i /= 2){ // Tree[i] = max(Tree[i * 2] , Tree[i * 2 + 1]); // } // return; // } //---------------------------------- //comp //---------------------------------- // map<int , int>mp; // map<int , int>pm; // void comp(set<int>s) // { // int idx = 0; // for(auto i : s){ // mp[i] = idx; // pm[idx] = i; // idx ++; // } // } //---------------------------------- int n , m , k; vector<int>a; set<int>glo; vector<set<int>>subsets; void rec(int i){ if(i == a.size()) return; glo.insert(a[i]); subsets.push_back(glo); rec(i + 1); glo.erase(a[i]); rec(i + 1); return; } signed main() { cin.tie(0) -> sync_with_stdio(0); cin >> n >> m >> k; set<int>mt; subsets.push_back(mt); vector<int>vec[n]; for(int i = 0 ; i < n ; i++){ for(int j = 0 ; j < m ; j++){ int x; cin >> x; vec[i].push_back(x); } } for(int i = 1; i <= m ; i++){ if(i != k) a.push_back(i); } rec(0); int mn = 1e9; for(int i = 0 ; i < subsets.size() ; i++){ int mx = -1; int cnt[m + 5] = {}; for(int k = 0 ; k < n ; k++){ for(int j = 0 ; j < vec[k].size() ; j++){ if(subsets[i].find(vec[k][j]) != subsets[i].end() and !subsets[i].empty()) continue; if(mx == -1) mx = vec[k][j]; cnt[vec[k][j]] ++; if(cnt[vec[k][j]] > cnt[mx] || (cnt[vec[k][j]] == cnt[mx] and vec[k][j] < mx)) mx = vec[k][j]; break; } } if(i == 0) cout << mx << endl; if(mx == k){ int sz = subsets[i].size(); mn = min(mn , sz); } } cout << mn << endl; }

Compilation message (stderr)

izbori.cpp: In function 'void rec(int)':
izbori.cpp:67:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |     if(i == a.size()) return;
      |        ~~^~~~~~~~~~~
izbori.cpp: In function 'int main()':
izbori.cpp:93:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::set<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   93 |   for(int i = 0 ; i < subsets.size() ; i++){
      |                   ~~^~~~~~~~~~~~~~~~
izbori.cpp:97:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   97 |           for(int j = 0 ; j < vec[k].size() ; j++){
      |                           ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...