Submission #1322909

#TimeUsernameProblemLanguageResultExecution timeMemory
1322909yessimkhanPIN (CEOI10_pin)C++20
35 / 100
1100 ms128512 KiB
#include <bits/stdc++.h>
// solved by bekagg
#define ll long long
#define ent '\n'
#define pb push_back
#define all(x) x.begin(),x.end()
#define PRaim_bek_abi ios_base::sync_with_stdio(0);cin.tie(0);

using namespace std;

const int N = 1e5+5;
const int MOD = 1e9+7;

int n , d;
string g[N];
ll ans;
unordered_map<string , int>mp;
vector<char>v;

void arkanefury228(){
    cin >> n >> d;

    if (n <= 2000){
        for (int i = 1; i <= n; i++){
            cin >> g[i];
            for (int j = 1; j < i; j++){
                int sum = 0;
                for (int k = 0; k < 4; k++){
                    if (g[i][k] != g[j][k]) sum++;
                }
                if (sum == d) ans++;
            }
        }
        cout << ans;
        return;
    }

    for (int i = 0; i <= 9; i++){
        v.pb(char(i + '0'));
    }
    for (int i = 0; i < 26; i++){
        v.pb(char(i + 'a'));
    }
    if (d == 0){
        for (int i = 1; i <= n; i++){
            string s;
            cin >> s;
            ans += mp[s];
        }
        cout << ans;
        return;
    }
    if (d == 4){
        for (int i = 1; i <= n; i++){
            string s;
            cin >> s;
        }
        cout << n * (n - 1) / 2;
        return;
    }
    if (d == 1){
        for (int i = 1; i <= n; i++){
            string s;
            cin >> s;
            for (int j = 0; j < v.size(); j++){
                string g = s;
                
                g[0] = v[j];
                ans += mp[g];
                g[0] = s[0];
                
                g[1] = v[j];
                ans += mp[g];
                g[1] = s[1];
                
                g[2] = v[j];
                ans += mp[g];
                g[2] = s[2];
                
                g[3] = v[j];
                ans += mp[g];
                g[3] = s[3];
            }
            mp[s]++;
        }
        cout << ans;
        return;
    }
    if (d == 2){
        for (int i = 1; i <= n; i++){
            string s;
            cin >> s;

            for (int j = 0; j < v.size(); j++){
                for (int k = 0; k < v.size(); k++){
                    string g = s;
                    g[0] = v[j];
                    g[1] = v[k];
                    ans += mp[g];
                    g[1] = s[1];

                    g[2] = v[k];
                    ans += mp[g];
                    g[2] = s[2];

                    g[3] = v[k];
                    ans += mp[g];
                    g[3] = s[3];
                    g[0] = s[0];

                    g[1] = v[j];
                    g[2] = v[k];
                    ans += mp[g];
                    g[2] = s[2];

                    g[3] = v[k];
                    ans += mp[g];
                    g[3] = s[3];
                    g[1] = s[1];
                    g[2] = v[j];
                    g[3] = v[k];
                    ans += mp[g];
                }
            }
            
            mp[s]++;
        }
        cout << ans;
        return;
    }
}

signed main(){

    PRaim_bek_abi

    int t=1;
    //cin>>t;
    for (int respagold = 1; respagold <= t; respagold++) arkanefury228();
}
#Verdict Execution timeMemoryGrader output
Fetching results...