Submission #1104388

#TimeUsernameProblemLanguageResultExecution timeMemory
1104388alexddOlympiads (BOI19_olympiads)C++17
44 / 100
2059 ms150188 KiB
#include <bits/stdc++.h> using namespace std; int n,k,c; int a[505][7]; struct config { int val[7],sumval; vector<int> alesi; void baga(int x) { alesi.push_back(x); sort(alesi.begin(),alesi.end()); sumval=0; for(int i=1;i<=k;i++) { val[i] = max(val[i], a[x][i]); sumval += val[i]; } } void schimba(int poz, int newv) { alesi[poz] = newv; sort(alesi.begin(),alesi.end()); sumval=0; for(int i=1;i<=k;i++) { val[i]=0; for(int j:alesi) val[i] = max(val[i], a[j][i]); sumval += val[i]; } } bool is_ales(int x) { for(int i:alesi) if(i==x) return 1; return 0; } }; bool operator<(config x, config y) { if(x.sumval < y.sumval) return 1; if(x.sumval > y.sumval) return 0; return x.alesi < y.alesi; if((int)x.alesi.size() < (int)y.alesi.size()) return 1; if((int)x.alesi.size() > (int)y.alesi.size()) return 0; for(int i=0;i<x.alesi.size();i++) { if(x.alesi[i] < y.alesi[i]) return 1; if(x.alesi[i] > y.alesi[i]) return 0; } return 0; } bool ales[505]; config init; signed main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>k>>c; for(int i=1;i<=n;i++) { for(int j=1;j<=k;j++) { cin>>a[i][j]; } } assert(k<=n); for(int i=1;i<=k;i++) { int mxm=-1,unde=-1; for(int j=1;j<=n;j++) { if(!ales[j] && a[j][i]>mxm) { mxm = a[j][i]; unde = j; } } assert(unde!=-1); ales[unde] = 1; init.baga(unde); } priority_queue<config> pq; map<config,int> inq; pq.push(init); inq[init]=1; int cnt=0; while(!pq.empty()) { config aux = pq.top(); pq.pop(); cnt++; if(cnt==c) { cout<<aux.sumval; return 0; } for(int s=0;s<k;s++) { for(int i=1;i<=n;i++) { if(!aux.is_ales(i)) { config newc = aux; newc.schimba(s,i); if(!inq[newc]) { pq.push(newc); inq[newc]=1; } } } } } assert(0==1); return 0; } /* 5 4 4 7 0 4 9 3 0 8 4 1 1 3 7 5 1 3 4 4 2 2 9 */

Compilation message (stderr)

olympiads.cpp: In function 'bool operator<(config, config)':
olympiads.cpp:52:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |     for(int i=0;i<x.alesi.size();i++)
      |                 ~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...