Submission #320201

#TimeUsernameProblemLanguageResultExecution timeMemory
320201Karen124PIN (CEOI10_pin)C++14
60 / 100
117 ms51624 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const ll N = 1e5 + 5; const ll M = 36 + 5; const ll K = 16 + 5; const ll O = 10; ll n, d, z[O]; ll ans[O], ansp[O]; ll cn[K][M][M][M][M]; unordered_map <char, ll> f; string a[N]; int main (){ f['0'] = 0; f['1'] = 1; f['2'] = 2; f['3'] = 3; f['4'] = 4; f['5'] = 5; f['6'] = 6; f['7'] = 7; f['8'] = 8; f['9'] = 9; f['a'] = 10; f['b'] = 11; f['c'] = 12; f['d'] = 13; f['e'] = 14; f['f'] = 15; f['g'] = 16; f['h'] = 17; f['i'] = 18; f['j'] = 19; f['k'] = 20; f['l'] = 21; f['m'] = 22; f['n'] = 23; f['o'] = 24; f['p'] = 25; f['q'] = 26; f['r'] = 27; f['s'] = 28; f['t'] = 29; f['u'] = 30; f['v'] = 31; f['w'] = 32; f['x'] = 33; f['y'] = 34; f['z'] = 35; cin >> n >> d; for (ll i = 0; i < n; i++){ cin >> a[i]; fill(ansp, ansp + O, 0); for (ll msk = 0; msk < 16; msk++){ fill(z, z + O, 0); for (int j = 0; j < 4; j++){ if ((msk >> j) & 1){ z[j] = f[a[i][j]]; } } ansp[__builtin_popcount(msk)] += cn[msk][z[0]][z[1]][z[2]][z[3]]; cn[msk][z[0]][z[1]][z[2]][z[3]] ++; } ans[4] += ansp[4]; ans[3] += ansp[3] - ansp[4]; ans[2] += ansp[2] - ansp[3] + ansp[4]; ans[1] += ansp[1] - ansp[2] + ansp[3] - ansp[4]; ans[0] += ansp[0] - ansp[1] + ansp[2] - ansp[3] + ansp[4]; } cout << ans[4 - d] << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...