답안 #721990

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
721990 2023-04-11T09:57:19 Z Dec0Dedd PIN (CEOI10_pin) C++14
100 / 100
295 ms 14520 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int K = 4;
const int N = 5e4+1;

map<string, ll> mp[(1<<K)];

ll ans[6], n, d;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);

    cin>>n>>d;
    for (int i=1; i<=n; ++i) {
        string s; cin>>s;

        for (int j=0; j<(1<<K); ++j) {
            string tmp="";
            for (int x=0; x<K; ++x) {
                if (j&(1<<x)) tmp+=s[x];
            }

            ++mp[j][tmp];
        }
    }

    for (int m=0; m<(1<<K); ++m) {
        ll tmp=0;
        for (auto u : mp[m]) tmp+=u.second*(u.second-1)/2;
        ans[4-__builtin_popcount(m)]+=tmp;
    }

    ll k;
    if (d == 1) k=ans[1]-ans[0];
    else if (d == 2) k=ans[2]-3*(ans[1]-ans[0]);
    else if (d == 3) k=ans[3]-2*ans[2]+3*(ans[1]-ans[0]);
    else k=ans[4]-ans[3]+ans[2]-ans[1]+ans[0];
    k=max(0ll, k);
    cout<<k<<"\n";
}
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 980 KB Output is correct
2 Correct 5 ms 852 KB Output is correct
3 Correct 4 ms 852 KB Output is correct
4 Correct 53 ms 3244 KB Output is correct
5 Correct 83 ms 3616 KB Output is correct
6 Correct 73 ms 3656 KB Output is correct
7 Correct 57 ms 3156 KB Output is correct
8 Correct 76 ms 3820 KB Output is correct
9 Correct 125 ms 5196 KB Output is correct
10 Correct 147 ms 5520 KB Output is correct
11 Correct 83 ms 3764 KB Output is correct
12 Correct 129 ms 5380 KB Output is correct
13 Correct 89 ms 3932 KB Output is correct
14 Correct 84 ms 3712 KB Output is correct
15 Correct 131 ms 5348 KB Output is correct
16 Correct 149 ms 11000 KB Output is correct
17 Correct 295 ms 14412 KB Output is correct
18 Correct 168 ms 12068 KB Output is correct
19 Correct 246 ms 13428 KB Output is correct
20 Correct 275 ms 14520 KB Output is correct