Submission #1004874

#TimeUsernameProblemLanguageResultExecution timeMemory
1004874MarwenElarbiOlympiads (BOI19_olympiads)C++17
100 / 100
28 ms7112 KiB
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#define fi first
#define se second
#define ll long long
#define pb push_back
#define ii pair<int,int>
const int nax=5e2+5;
int tab[2005][6];
int n,k,c;
void compare(vector<int> &v){
    for (int i = 0; i < k; ++i)
    {
        for (int j = i+1; j < (int)v.size(); ++j)
        {
            if(tab[v[j]][i]>tab[v[i]][i]) swap(v[i],v[j]);
        }
    }
    return;
}
int val(vector<int> &v){
    int sum=0;
    for (int i = 0; i < k; ++i)
    {
        int mx=0;
        for (int j = 0; j < k; ++j)
        {
            mx=max(mx,tab[v[j]][i]);
        }
        sum+=mx;
    }
    return sum;
}
int main()
{
    cin>>n>>k>>c;
    vector<int> cur;
    for (int i = 0; i < n; ++i)
    {
        cur.pb(i);
        for (int j = 0; j < k; ++j)
        {
            cin>>tab[i][j];
        }
    }
    compare(cur);
    priority_queue<tuple<int,int,vector<int>>> pq;
    pq.push({val(cur),0,cur});
    while(c--){
        auto [ans,pos,v] = pq.top();
        //cout <<ans<<" "<<pos<<" "<<v.size()<<endl;
        pq.pop();
        if(c==0){
            cout << ans<<endl;
            return 0;
        }
        if(v.size()==k) continue;
        for (int i = pos; i < k; ++i)
        {
            vector<int> nxt=v;
            nxt.erase(nxt.begin()+i);
            compare(nxt);
            pq.push({val(nxt),i,nxt});
        }
    }
}

Compilation message (stderr)

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