Submission #167580

#TimeUsernameProblemLanguageResultExecution timeMemory
167580manh9203Vještica (COCI16_vjestica)C++17
160 / 160
134 ms1952 KiB
#include<bits/stdc++.h> using namespace std; const int N = 20; const int M = 1e5 + 5; int n,cnt[N][30],dem[M],dp[M]; string s[N]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for(int i=1;i<=n;i++){ cin >> s[i]; for(int j=0;j<s[i].length();j++){ cnt[i][s[i][j] - 96]++; } } for(int mask = 1; mask < (1 << n); mask++){ for(int i=1;i<=26;i++){ int mn = 1e9; for(int j=0;j<n;j++){ if((mask >> j) & 1){ mn = min(mn, cnt[j+1][i]); } } dem[mask] += mn; } } dp[0] = 1e9; for(int mask = 1; mask < (1 << n); mask++){ if(__builtin_popcount(mask) == 1){ for(int i=0;i<n;i++){ if((mask >> i) & 1){ dp[mask] = s[i+1].length(); } } }else{ dp[mask] = 1e9; for(int sub = mask; sub > 0; sub = (sub-1) & mask){ dp[mask] = min(dp[mask], dp[sub] + dp[sub ^ mask] - dem[mask]); } } } cout << dp[(1<<n)-1] + 1; }

Compilation message (stderr)

vjestica.cpp: In function 'int main()':
vjestica.cpp:12:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j=0;j<s[i].length();j++){
               ~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...