Submission #447305

#TimeUsernameProblemLanguageResultExecution timeMemory
447305LptN21Kronican (COCI16_kronican)C++14
100 / 100
1159 ms4420 KiB
#include <bits/stdc++.h> using namespace std; #define fastIO ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL); #define FF first #define SS second #define pb push_back #define sz(x) (int)x.size() #define PI acos(-1.0) #define lb lower_bound #define ub upper_bound #define all(a) (a).begin(), (a).end() #define odd(x) __builtin_parity((int)x) #define cntbit(x) __builtin_popcount(x) typedef long long ll; typedef pair<int, int> ii; const int N = 20+1, M=20; const int MOD = 998244353; const int oo = 1e9; int n, m, k, t; const int MASK=(1<<M)-1; int a[N][N], _dp[MASK+1]; int dp(int mask) { if(cntbit(mask)==m) return 0; if(_dp[mask]!=-1) return _dp[mask]; int ans=oo; for(int i=0;i<n;i++) if(mask&(1<<i)) for(int j=0;j<n;j++) if(i!=j&&mask&(1<<j)) ans=min(ans, dp(mask^(1<<i))+a[i][j]); return _dp[mask]=ans; } signed main() { //freopen("test.inp", "r", stdin); //freopen("test.out", "w", stdout); //fastIO; scanf("%d%d", &n, &m); memset(_dp, -1, sizeof _dp); for(int i=0;i<n;i++) for(int j=0;j<n;j++) scanf("%d", &a[i][j]); printf("%d", dp((1<<n)-1)); return 0; } /* stuff you should look for - int overflow, array bounds - special cases (n=1?) - do smth instead of do nothing and stay organized - WRITE STUFF DOWN - DONT JUST STICK ON ONE APPROACH */

Compilation message (stderr)

kronican.cpp: In function 'int main()':
kronican.cpp:40:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |     scanf("%d%d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~
kronican.cpp:43:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   43 |             scanf("%d", &a[i][j]);
      |             ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...