답안 #651404

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
651404 2022-10-18T17:15:38 Z BidoTeima Izbori (COCI17_izbori) C++17
80 / 80
19 ms 312 KB
/*
ID: BidoTeima
LANG: C++11
TASK: Izbori
*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
void moo(string filename);
void ACPLS(string str = "")
{
    if(str=="NOF")return;
    if(str.size())
        moo(str);
    else{
        #ifndef ONLINE_JUDGE
            freopen("output.txt", "w", stdout);
            freopen("input.txt", "r", stdin);
        #endif
    }
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}
void moo(string fileName){
    freopen((fileName+".in").c_str(),"r",stdin);
    freopen((fileName+".out").c_str(),"w",stdout);
}
#define tc         \
    int tttttt/*,subtask*/;    \
    cin >> tttttt/* >> subtask*/; \
    while (tttttt--)/*end
*/    

int main()
{
    //ACPLS("");
    int n,m,k;
    cin>>n>>m>>k;
    vector<vector<int>>a(n,vector<int>(m));
    int f[m+1]={0};
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            cin>>a[i][j];
            if(j == 0)
                ++f[a[i][j]];
        } 
    }
    int winner = 1;
    for(int i = 1; i <= m; i++){
        if(f[i] > f[winner])
            winner = i;
    }
    cout<<winner<<'\n';
    bool vis[m+1]={0};
    int ans = m-1;
    for(int i = 0; i < (1<<m); i++){
        if(i&(1<<(k-1)))continue;
        int freq[m+1]={0};
        for(int j = 0; j < n; j++){
            for(int k = 0; k < m; k++){
                if(!(i&(1<<(a[j][k]-1)))){
                    ++freq[a[j][k]];
                    break;
                }
            }
        }
        if(max_element(freq+1,freq+m+1)-freq == k){
            ans=min(ans,__builtin_popcount(i));
        }
    }
    cout<<ans<<'\n';
}

Compilation message

izbori.cpp: In function 'int main()':
izbori.cpp:55:10: warning: unused variable 'vis' [-Wunused-variable]
   55 |     bool vis[m+1]={0};
      |          ^~~
izbori.cpp: In function 'void ACPLS(std::string)':
izbori.cpp:17:20: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |             freopen("output.txt", "w", stdout);
      |             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
izbori.cpp:18:20: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |             freopen("input.txt", "r", stdin);
      |             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
izbori.cpp: In function 'void moo(std::string)':
izbori.cpp:26:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |     freopen((fileName+".in").c_str(),"r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
izbori.cpp:27:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |     freopen((fileName+".out").c_str(),"w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 4 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 2 ms 212 KB Output is correct
9 Correct 3 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 2 ms 212 KB Output is correct
12 Correct 8 ms 312 KB Output is correct
13 Correct 15 ms 308 KB Output is correct
14 Correct 8 ms 264 KB Output is correct
15 Correct 3 ms 212 KB Output is correct
16 Correct 19 ms 212 KB Output is correct
17 Correct 8 ms 212 KB Output is correct
18 Correct 17 ms 212 KB Output is correct
19 Correct 17 ms 212 KB Output is correct
20 Correct 17 ms 308 KB Output is correct