Submission #135674

#TimeUsernameProblemLanguageResultExecution timeMemory
135674onjo0127PIN (CEOI10_pin)C++11
100 / 100
479 ms12092 KiB
#include <bits/stdc++.h> using namespace std; int N, D; unordered_map<string, int> mp; string S[50009]; string make(string S, int msk) { for(int i=0; i<4; i++) if((msk >> i) & 1) S[i] = '_'; return S; } long long solve1() { long long ans = 0; for(int i=1; i<=N; i++) { ans += mp[make(S[i], 1)]; ans += mp[make(S[i], 2)]; ans += mp[make(S[i], 4)]; ans += mp[make(S[i], 8)]; } return ans; } long long solve2() { long long ans = 0; for(int i=1; i<=N; i++) { ans += mp[make(S[i], 3)]; ans += mp[make(S[i], 5)]; ans += mp[make(S[i], 9)]; ans += mp[make(S[i], 6)]; ans += mp[make(S[i], 10)]; ans += mp[make(S[i], 12)]; ans -= 3*mp[make(S[i], 1)]; ans -= 3*mp[make(S[i], 2)]; ans -= 3*mp[make(S[i], 4)]; ans -= 3*mp[make(S[i], 8)]; } return ans; } long long solve3() { long long ans = 0; for(int i=1; i<=N; i++) { ans += mp[make(S[i], 14)]; ans += mp[make(S[i], 13)]; ans += mp[make(S[i], 11)]; ans += mp[make(S[i], 7)]; ans -= 2*mp[make(S[i], 3)]; ans -= 2*mp[make(S[i], 5)]; ans -= 2*mp[make(S[i], 9)]; ans -= 2*mp[make(S[i], 6)]; ans -= 2*mp[make(S[i], 10)]; ans -= 2*mp[make(S[i], 12)]; ans += 3*mp[make(S[i], 1)]; ans += 3*mp[make(S[i], 2)]; ans += 3*mp[make(S[i], 4)]; ans += 3*mp[make(S[i], 8)]; } return ans; } int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); cin >> N >> D; for(int i=1; i<=N; i++) { cin >> S[i]; for(int j=1; j<16; j++) ++mp[make(S[i], j)]; } for(auto& it: mp) --it.second; long long ans = 0; if(D == 1) cout << solve1() / 2; if(D == 2) cout << solve2() / 2; if(D == 3) cout << solve3() / 2; if(D == 4) cout << (1LL*N*(N-1) - solve1() - solve2() - solve3()) / 2; return 0; }

Compilation message (stderr)

pin.cpp: In function 'int main()':
pin.cpp:75:12: warning: unused variable 'ans' [-Wunused-variable]
  long long ans = 0;
            ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...