| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 863093 | Benmath | Olympiads (BOI19_olympiads) | C++14 | 829 ms | 19608 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std; int niz[41][7];
int n, k , c;
int solve(vector<int>indeksi){
    int maxi[k];
    for(int i = 0; i < k; i++){
        maxi[i] = 0;
    }
    for(int i = 0; i < indeksi.size(); i++){
        int tren = indeksi[i];
        for(int j = 0; j < k; j++){
            maxi[j] = max(maxi[j], niz[tren][j]);
        }
    }
    int sum = 0;
    for(int i = 0; i < k; i++){
        sum = sum + maxi[i];
    }
    return sum;
}
int main(){
    cin >> n >> k >> c;
   
    for(int i = 0; i < n; i++){
        for(int j = 0; j < k; j++){
            cin >> niz[i][j];
        }
    }
int so = n / 2;
  vector<int>vector1[n + 1];
  vector<int>vector2[n + 1];
    for(int i = 0; i < so; i ++){
        for(int j = 0; j < k; j++){
            vector1[i].push_back(niz[i][j]);
        }
    }
    for(int i = so; i < n; i++){
        for(int j = 0; j < k; j++){
            vector2[i - so].push_back(niz[i][j]);
        }
       
    }
    int size1 = so;
    int size2 = n - so;
    vector<int>v1[k + 1];
    vector<int>v2[k + 1];
    vector<int>ans;
        for(int i = 0; i < (1<<size1); i++){   int brojac = 0;
            for(int j = 0; j < size1; j++){
             
                int res = i & (1<<j);
                if(res != 0){
                    brojac++;
                }
               
            }
            if(brojac <= k){
                v1[brojac].push_back(i);
            }
        }
     for(int i = 0; i < (1<<size2); i++){ int brojac = 0;
            for(int j = 0; j < size2; j++){
               
                int res = i & (1<<j);
                if(res != 0){
                    brojac++;
                }
               
            }
            if(brojac <= k){
                v2[brojac].push_back(i);
            }
        }
        for(int i = 0; i < k; i++){
            int velicina = v1[i].size();
            for(int j = 0; j < velicina; j ++){
               vector<int>prvi_indeksi;
               int x = v1[i][j];
                for(int j1 = 0; j1 < size1; j1++){
               
                int res = x & (1<<j1);
                if(res != 0){
                   prvi_indeksi.push_back(j1);
                }
               
            }
            int velicina2 = v2[k - i].size();
            for(int t = 0; t < velicina2; t++){
                vector<int>indeksi = prvi_indeksi;
                int x = v2[k - i][t];
                  for(int j1 = 0; j1 < size2; j1++){
               
                int res = x & (1<<j1);
                if(res != 0){
                   indeksi.push_back(j1 + so);
                }
               
            }
            ans.push_back(solve(indeksi));
           
            }
           
            }
        }
sort(ans.begin(),ans.end());
int to = ans.size();
cout << ans[to - c];
   
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
