제출 #1259735

#제출 시각아이디문제언어결과실행 시간메모리
1259735stanirinaColouring a rectangle (eJOI19_colouring)C++20
0 / 100
181 ms167936 KiB
#include <bits/stdc++.h>
#define endl '\n'
#define int long long

using namespace std;

const int INF=numeric_limits<int>::max();

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int m,n;
    cin>>m>>n;
    vector<pair<int,int>> v;
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            int d1=i-j+n-1;
            int d2=i+j+(m+n-1);
            v.push_back({d1,d2});
        }
    }
    //for(int i=0;i<v.size();i++)cout<<v[i].first+1<<' '<<v[i].second+1<<endl;
    vector<int> niz(2*(m+n-1));
    for(int i=0;i<2*(n+m-1);i++)cin>>niz[i];
    int ans=INF;
    for(int i=0;i<(1<<(2*(m+n-1)));i++){
        int num=0;
        int sum=0ll;
        for(int j=2*(m+n-1)-1;j>=0;j--){
            if(i & (1<<j)){num++;sum+=niz[j];}
        }
        if(num<m+n-1)continue;
        bool ok=true;
        for(int j=0;j<v.size();j++){
            if(!((i&(1<<v[j].first))||(i&(1<<v[j].second)))){
                ok=false;
                break;
            }
        }
        if(ok)ans=min(ans,sum);
    }
    cout<<ans<<endl;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...