Submission #942170

#TimeUsernameProblemLanguageResultExecution timeMemory
942170phoenix0423Olympiads (BOI19_olympiads)C++17
44 / 100
1053 ms262144 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; #define fastio ios::sync_with_stdio(false), cin.tie(0) #pragma GCC optimize("Ofast") #define pb push_back #define eb emplace_back #define f first #define s second #define int long long #define lowbit(x) x&-x const int maxn = 1e5 + 5; const int INF = 1e9 + 7; int a[505][10]; int n, k, c; struct info{ set<int> idx; int ans; info(){} info(set<int> _idx, int _ans) : idx(_idx), ans(_ans){} bool operator < (const info& other) const{ return ans < other.ans; } }; priority_queue<info> q; set<set<int>> used; int cal(set<int> id){ vector<int> mx(k); for(auto x : id){ for(int i = 0; i < k; i++){ mx[i] = max(mx[i], a[x][i]); } } return accumulate(mx.begin(), mx.end(), 0); } signed main(void){ fastio; cin>>n>>k>>c; vector<int> mx(k); for(int i = 0; i < n; i++){ for(int j = 0; j < k; j++){ cin>>a[i][j]; if(a[i][j] > a[mx[j]][j]) mx[j] = i; } } set<int> st; for(int i = 0; i < k; i++) st.insert(mx[i]); for(int i = 0; i < n; i++){ if(st.size() == k) break; if(st.count(i)) continue; st.insert(i); } used.insert(st); q.push(info(st, cal(st))); for(int rd = 0; rd < c; rd++){ auto [idx, ans] = q.top(); q.pop(); if(rd == c - 1){ cout<<ans<<"\n"; return 0; } for(auto x : idx){ set<int> cur; for(auto u : idx){ if(u != x) cur.insert(u); } for(int j = 0; j < n; j++){ if(!cur.count(j)){ cur.insert(j); if(!used.count(cur)){ q.push(info(cur, cal(cur))); used.insert(cur); } cur.erase(j); } } } } }

Compilation message (stderr)

olympiads.cpp: In function 'int main()':
olympiads.cpp:52:22: warning: comparison of integer expressions of different signedness: 'std::set<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   52 |         if(st.size() == k) break;
      |            ~~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...