제출 #1322800

#제출 시각아이디문제언어결과실행 시간메모리
1322800syanvuPIN (CEOI10_pin)C++20
100 / 100
51 ms17764 KiB
// #pragma optimize ("g",on) // #pragma GCC optimize ("inline") // #pragma GCC optimize ("Ofast") // #pragma GCC optimize ("unroll-loops") // #pragma GCC optimize ("03") #include <bits/stdc++.h> #define SS ios_base::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr); #define int long long #define all(v) v.begin(),v.end() using namespace std; // mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); const int N = 1e5 + 1, MX = 40, inf = 1e18, p = 11, p1 = 17, mod = 1e9 + 7, mod1 = 998244353; int cnt[MX][MX][MX][MX] = {}; void solve(){ int n, d; cin >> n >> d; int ans = 0; auto f = [&](char c){ if(c >= '0' && c <= '9') return (c - '0' + 1); else return (c - 'a' + 11); }; for(int i = 0; i < n; i++){ string s; cin >> s; for(int mask = 0; mask < (1ll << 4); mask++){ int h = 0; int ps[4] = {}; vector<int> v; for(int j = 0; j < 4; j++){ if((mask >> j) & 1){ h++; ps[j] = f(s[j]); } else v.push_back(j); } if(v.size() != d) continue; for(int mask1 = 0; mask1 < (1ll << v.size()); mask1++){ int ps1[4]; for(int j = 0; j < 4; j++) ps1[j] = ps[j]; int b = 0; for(int j = 0; j < v.size(); j++){ if((mask1 >> j) & 1){ ps1[v[j]] = f(s[v[j]]); b++; } } if(b % 2 == 0) ans += cnt[ps1[0]][ps1[1]][ps1[2]][ps1[3]]; else ans -= cnt[ps1[0]][ps1[1]][ps1[2]][ps1[3]]; } } for(int mask = 0; mask < (1ll << 4); mask++){ int ps[4] = {}; for(int j = 0; j < 4; j++){ if((mask >> j) & 1){ ps[j] = f(s[j]); } } cnt[ps[0]][ps[1]][ps[2]][ps[3]]++; } } cout << ans << '\n'; } signed main(){ SS // freopen("trains.in", "r", stdin); // freopen("trains.out", "w", stdout); int t = 1; // cin >> t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...