답안 #1088469

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1088469 2024-09-14T13:01:24 Z vjudge1 Izbori (COCI17_izbori) C++17
80 / 80
29 ms 480 KB
//                          بسم الله الرحمن الرحيم
#include "bits/stdc++.h"

using namespace std;

#define ll long long
#define int long long
#define pb push_back
#define endl '\n'
#define ld long double
#define applejuice ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);

const ll mod=1e9+7;
const ll inf=1e18;
const ll mxsz=100+4;
const ld pi=acos(-1.0);

int win[mxsz];//m
vector<int>need;
int a[mxsz][19];

signed main() {
    applejuice;

    int n,m,k;
    cin>>n>>m>>k;
    for (int i=0;i<n;i++){
        for (int j=0;j<m;j++){
            cin>>a[i][j];
            if(j==0)win[a[i][0]]++;
        }
    }
    /*for(int i=0;i<need.size();i++){
        cout<<need[i]<<" ";
    }cout<<endl;*/
    /*for (int i=0;i<=m;i++){
        cout<<win[i]<<" ";
    }cout<<endl;*/
    int mxn=-1,mxi=0;
    for (int i=0;i<=m;i++){
        if (win[i]>mxn){
            mxn=win[i];
            mxi=i;
        }
    }
    //cout<<mxi<<" "<<mxn<<endl;
    cout<<mxi<<endl;

    //everything good so far

    int ans=m;
    for (int ma=1;ma<(1<<m);ma++){
        bool rev[m+1]={};
        int cnt=0;
        for (int i=0;i<m;i++){
            if((1<<i)&ma){
                rev[i+1]=1;
            }else{
                cnt++;
            }
        }
        /*for (int i=0;i<=m;i++){
            cout<<rev[i]<<" ";
        }
        cout<<endl;*/
        int cur=m,mx=-1;
        vector<int>t;
        for (int i=0;i<n;i++){
            for (int j=0;j<m;j++){
                if(rev[a[i][j]]){
                    t.pb(a[i][j]);
                    break;
                }
            }
        }
        int wn[m+1]={};
        for (auto x:t)wn[x]++;
        for (int i=0;i<=m;i++){
            mx=max(mx,wn[i]);
        }
        for (int i=0;i<=m;i++){
            if(wn[i]==mx){
                cur=i;
                break;
            }
        }
        if(cur==k){
            ans=min(cnt,ans);
            //cout<<"jlefi"<<endl;
        }
    }
    cout<<ans<<endl;





    /*if(mxi==k){
        cout<<0;
        return 0;
    }
    int ans=0,ned;
    if (mxi<k){
        ned=(mxn+1)/2;
        //cout<<ned<<endl;
        sort(need.begin(),need.end());
        //cout<<need[0]<<endl;
        for (int i=0;i<ned;i++){
            ans+=need[i];
        }
    }else{
        ned=mxn/2;
        //cout<<ned<<endl;
        sort(need.begin(),need.end());
        for (int i=0;i<ned;i++){
            ans+=need[i];
        }
    }
    cout<<ans<<endl;*/


    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 348 KB Output is correct
2 Correct 6 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 6 ms 348 KB Output is correct
5 Correct 2 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 6 ms 344 KB Output is correct
9 Correct 4 ms 348 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
11 Correct 4 ms 348 KB Output is correct
12 Correct 13 ms 480 KB Output is correct
13 Correct 29 ms 456 KB Output is correct
14 Correct 13 ms 348 KB Output is correct
15 Correct 4 ms 348 KB Output is correct
16 Correct 27 ms 348 KB Output is correct
17 Correct 13 ms 476 KB Output is correct
18 Correct 25 ms 476 KB Output is correct
19 Correct 27 ms 348 KB Output is correct
20 Correct 26 ms 344 KB Output is correct