Submission #143534

#TimeUsernameProblemLanguageResultExecution timeMemory
143534OrtIzbori (COCI17_izbori)C++11
76 / 80
45 ms504 KiB
#include<bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> #include<ext/rope> #define MEM(a, b) memset(a, (b), sizeof(a)) #define ALL(c) (c).begin(),(c).end() #define sz(a) ((int)(a.size())) #define ll long long #define LINF (ll)1e18 #define INF (int)1e9 #define MINF 0x3F3F3F3F #define pb push_back #define fs first #define sc second #define mp make_pair #define MOD 1000000007 #define IO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define MAX 105 #define N 17 #define watch(x) cerr<<#x<<" = "<<(x)<<endl; using namespace std; using namespace __gnu_pbds; using namespace __gnu_cxx; template<class T> using indexed_set = tree<T, null_type, less<T>, rb_tree_tag,tree_order_statistics_node_update>; typedef pair<int,int> pii; typedef pair<ll,ll> pll; int n, m, k, sol, mx, c, t; int fq[MAX], mat[MAX][N]; bool sub[N]; int main() { IO; cin >> n >> m >> k; k--; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin >> mat[i][j], mat[i][j]--; for(int i=0;i<n;i++) fq[mat[i][0]]++; for(int i=0;i<n;i++) if(fq[i]>mx) mx = fq[i], t = i; cout << t+1 << "\n"; for(int i=0;i<(1<<m);i++) { MEM(sub, 0); MEM(fq, 0); c = 0; mx = -1; t = -1; for(int j=0;j<m;j++) if((i>>j)&1) sub[j] = true, c++; for(int j=0;j<n;j++) for(int k=0;k<m;k++) if(sub[mat[j][k]]) { fq[mat[j][k]]++; break; } for(int j=0;j<m;j++) if(fq[j]>mx) mx = fq[j], t = j; if(t==k) sol = max(sol, c); } cout << m-sol; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...