# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
891781 | 2023-12-24T03:55:01 Z | vkvkvkvk | Vještica (COCI16_vjestica) | C++17 | 122 ms | 36444 KB |
#include <bits/stdc++.h> #define int long long #define file(task) if(fopen(task".inp", "r")) { freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); } #define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; ++i) #define FORD(i, a, b) for(int i = (a), _b = (b); i >= _b; --i) #define all(X) (X).begin(), (X).end() #define MASK(X) (1ll << (X)) #define bit(X, i) (((X)>>(i))&1) #define SZ(X) (int)(X).size() using namespace std; const int maxN = 1e6; int N; string s[maxN+5]; void read_input() { cin >> N; FOR(i, 1, N) cin >> s[i]; } namespace sub { const int Nsub = 18; const int maxNsub = MASK(18); const int inf = 1e9; int f[maxNsub+5], cnt[Nsub+5][30]; int mn[maxNsub+5]; void solve() { memset(f, 0x3f3f3f, sizeof(f)); FOR(i, 1, N) { for(char c : s[i]) ++cnt[i][c - 'a']; f[MASK(i - 1)] = SZ(s[i]); } FOR(mask, 1, MASK(N) - 1) { FOR(c, 0, 25) { int cur = inf; FOR(i, 1, N) { if(bit(mask, i - 1)) cur = min(cur, cnt[i][c]); } mn[mask] += cur; } } FOR(x, 0, MASK(N) - 1) { int s = (MASK(N) - 1) ^ x; for(int y = s; y; y = (y - 1) & s) { f[x|y] = min(f[x|y], f[x] + f[y] - mn[x|y]); } } cout << f[MASK(N) - 1] + 1; } } void solve() { sub::solve(); } int32_t main() { cin.tie(0)->sync_with_stdio(0); file("TRIE"); read_input(); solve(); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 11 ms | 35672 KB | Output is correct |
2 | Correct | 7 ms | 35676 KB | Output is correct |
3 | Correct | 8 ms | 35672 KB | Output is correct |
4 | Correct | 107 ms | 35872 KB | Output is correct |
5 | Correct | 110 ms | 35948 KB | Output is correct |
6 | Correct | 110 ms | 36192 KB | Output is correct |
7 | Correct | 122 ms | 36444 KB | Output is correct |
8 | Correct | 111 ms | 36188 KB | Output is correct |
9 | Correct | 108 ms | 36188 KB | Output is correct |
10 | Correct | 108 ms | 36188 KB | Output is correct |