답안 #944367

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
944367 2024-03-12T16:04:54 Z PaDi Kronican (COCI16_kronican) C++14
0 / 100
6 ms 16116 KB
#include <bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);
#define int long long
#define pb push_back
#define mp make_pair
#define READS(x); string x;cin >> x;
#define READ(x); int x;cin >> x;
#define DOUREAD(x,y); int x,y;cin >> x >> y;
#define TRIREAD(x,y,z); int x,y,z;cin >> x >> y >> z;
int N,K;
const int MAXN = 22;
const int MASK = 2e6+69;
int dp[MASK];
int C[MAXN][MAXN];
int MAXI = 1e9;
namespace sub1{
    void solve(){
        
    }
}
signed main(){fast
    cin >> N >> K;
    for(int i = 1; i <= N ; i++){
        for(int j = 1; j <= N ; j++){
            cin >> C[i][j];
        }
    }
    for(int i = 1; i <= MASK ; i++){
            dp[i] = 1e9;
        }
        int LIM = pow(2,N)-1;
        dp[LIM] = 0;
        for(int mask = pow(2,N)-1; mask >= 0 ; mask--){
            if(__builtin_popcount(mask) >= K){
                for(int i = 0 ; i < N ; i++){
                    int BIT = mask>>i&1;
                    if(BIT == 1){
                        int SUFMASK = (mask)^(1<<i);
                        for(int j = 0; j < N ; j++){
                            int TIB = mask>>j&1;
                            if(TIB == 0){
                                int PREMASK = mask + pow(2,j);
                                //if(dp[mask]+C[i+1][j+1] == 0) cout << i << " " << j << " " << mask << "LOL\n";
                                dp[mask] = min(dp[mask],dp[PREMASK]+C[j+1][i+1]);
                            }
                        }
                    }
                }
                if(__builtin_popcount(mask) == K) MAXI = min(MAXI,dp[mask]);
            }
        }
        cout << MAXI << '\n';
}

Compilation message

kronican.cpp: In function 'int main()':
kronican.cpp:39:29: warning: unused variable 'SUFMASK' [-Wunused-variable]
   39 |                         int SUFMASK = (mask)^(1<<i);
      |                             ^~~~~~~
kronican.cpp:30:19: warning: iteration 2000068 invokes undefined behavior [-Waggressive-loop-optimizations]
   30 |             dp[i] = 1e9;
      |             ~~~~~~^~~~~
kronican.cpp:29:22: note: within this loop
   29 |     for(int i = 1; i <= MASK ; i++){
      |                    ~~^~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 15960 KB Output isn't correct
2 Incorrect 3 ms 16116 KB Output isn't correct
3 Incorrect 3 ms 15964 KB Output isn't correct
4 Incorrect 3 ms 15964 KB Output isn't correct
5 Incorrect 3 ms 15964 KB Output isn't correct
6 Incorrect 3 ms 15964 KB Output isn't correct
7 Incorrect 3 ms 15964 KB Output isn't correct
8 Incorrect 3 ms 16080 KB Output isn't correct
9 Incorrect 6 ms 15964 KB Output isn't correct
10 Incorrect 6 ms 16116 KB Output isn't correct