Submission #1226371

#TimeUsernameProblemLanguageResultExecution timeMemory
1226371VMaksimoski008Vještica (COCI16_vjestica)C++20
160 / 160
81 ms584 KiB
#include <bits/stdc++.h> using namespace std; signed main() { int n; cin >> n; int a[n][26]; for(int i=0; i<n; i++) { string s; cin >> s; for(int j=0; j<26; j++) a[i][j] = 0; for(char ch : s) a[i][ch-'a']++; } vector<int> dp(1<<n, 1e9); for(int i=0; i<n; i++) { dp[1<<i] = 0; for(int j=0; j<26; j++) dp[1<<i] += a[i][j]; } for(int s=1; s<(1<<n); s++) { if(__builtin_popcount(s) == 1) continue; int len = 0; for(int j=0; j<26; j++) { int mn = 1e9; for(int i=0; i<n; i++) if(s & (1 << i)) mn = min(mn, a[i][j]); len += mn; } for(int s2=s&(s-1); s2; s2=s&(s2-1)) dp[s] = min(dp[s], dp[s2] + dp[s^s2] - len); } cout << dp[(1<<n)-1] + 1 << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...