Submission #1272717

#TimeUsernameProblemLanguageResultExecution timeMemory
1272717zNatsumiVještica (COCI16_vjestica)C++20
160 / 160
119 ms1128 KiB
#include <bits/stdc++.h> using namespace std; int n, cnt[20][26], f[(1<<16) + 5], g[(1<<16) + 5]; int32_t main(){ cin.tie(0)->sync_with_stdio(0); // #define task "test" // if(fopen(task ".inp", "r")){ // freopen(task ".inp", "r", stdin); // freopen(task ".out", "w", stdout); // } cin >> n; for(int i = 0; i < n; i++){ string s; cin >> s; for(auto x : s) cnt[i][x - 'a'] += 1; f[1 << i] = s.size(); } for(int msk = 1; msk < (1 << n); msk++){ for(int x = 0; x < 26; x++){ int tmp = 1'000'000'000; for(int i = 0; i < n; i++) if(msk >> i & 1) tmp = min(tmp, cnt[i][x]); g[msk] += tmp; } } for(int msk = 1; msk < (1 << n); msk++){ if(__builtin_popcount(msk) == 1) continue; f[msk] = 1'000'000'000; for(int sub = msk; sub > 0; sub = (sub - 1) & msk) if(sub != msk) f[msk] = min(f[msk], f[sub] + f[msk ^ sub] - g[msk]); } cout << f[(1 << n) - 1] + 1 << "\n"; return 0; }

Compilation message (stderr)

vjestica.cpp: In function 'int32_t main()':
vjestica.cpp:25:14: warning: iteration 4 invokes undefined behavior [-Waggressive-loop-optimizations]
   25 |       g[msk] += tmp;
      |       ~~~~~~~^~~~~~
vjestica.cpp:21:22: note: within this loop
   21 |     for(int x = 0; x < 26; x++){
      |                    ~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...