Submission #1322956

#TimeUsernameProblemLanguageResultExecution timeMemory
1322956the_ZHERPIN (CEOI10_pin)C++20
60 / 100
193 ms10484 KiB
#include <bits/stdc++.h>
using namespace std;

#define boost ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const int inf=1e9;
const int N=2e5+100;
const int mod=1e9+7;
struct edge{
    int a,b;
};
vector<string>v;
int cnt[38][38][38][38];
int cnt1[5][5][38][38];
map<char,int>mp;
signed main(){
    boost;
    int n,d;
    cin>>n>>d;
    int cnt1=0;
    for(char i='a';i<='z';i++){
        mp[i]=cnt1;
        cnt1++;
    }
    for(char i='0';i<='9';i++){
        mp[i]=cnt1;
        cnt1++;
    }
    for(int i=1;i<=n;i++){
        string s;
        cin>>s;
        v.push_back(s);
        cnt[mp[s[0]]][mp[s[1]]][mp[s[2]]][mp[s[3]]]++;
        cnt[mp[s[0]]][mp[s[1]]][37][37]++;
        cnt[mp[s[0]]][37][mp[s[2]]][37]++;
        cnt[mp[s[0]]][37][37][mp[s[3]]]++;
        cnt[37][mp[s[1]]][mp[s[2]]][37]++;
        cnt[37][mp[s[1]]][37][mp[s[3]]]++;
        cnt[37][37][mp[s[2]]][mp[s[3]]]++; 
        cnt[37][mp[s[1]]][mp[s[2]]][mp[s[3]]]++;
        cnt[mp[s[0]]][37][mp[s[2]]][mp[s[3]]]++;
        cnt[mp[s[0]]][mp[s[1]]][37][mp[s[3]]]++;
        cnt[mp[s[0]]][mp[s[1]]][mp[s[2]]][37]++;
    }
    if(n<=0){
        int ans=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(i==j){
                    continue;
                }
                string s=v[i],s1=v[j];
                int cnt=0;
                for(int l=0;l<4;l++){
                    if(s[l]!=s1[l]){
                        cnt++;
                    }
                }
                if(cnt==d){
                    ans++;
                }
            }
        }
        cout<<ans;
        return 0;
    }
    int ans=0;
    for(int i=0;i<n;i++){
        if(d==1){
            string s=v[i];
            for(int j=0;j<4;j++){
                for(int l=0;l<=35;l++){
                    if(j==0&&l!=mp[s[0]]){
                        ans+=cnt[l][mp[s[1]]][mp[s[2]]][mp[s[3]]];
                    }
                    if(j==1&&l!=mp[s[1]]){
                        ans+=cnt[mp[s[0]]][l][mp[s[2]]][mp[s[3]]];   
                    }
                    if(j==2&&l!=mp[s[2]]){
                        ans+=cnt[mp[s[0]]][mp[s[1]]][l][mp[s[3]]];   
                    }
                    if(j==3&&l!=mp[s[3]]){
                        ans+=cnt[mp[s[0]]][mp[s[1]]][mp[s[2]]][l];   
                    }
                }
            }
            continue;
        }
        if(d==2){
            string s=v[i];
            ans+=cnt[mp[s[0]]][mp[s[1]]][37][37]+1-cnt[mp[s[0]]][mp[s[1]]][mp[s[2]]][37]-cnt[mp[s[0]]][mp[s[1]]][37][mp[s[3]]];
            ans+=cnt[mp[s[0]]][37][mp[s[2]]][37]+1-cnt[mp[s[0]]][mp[s[1]]][mp[s[2]]][37]-cnt[mp[s[0]]][37][mp[s[2]]][mp[s[3]]];
            ans+=cnt[mp[s[0]]][37][37][mp[s[3]]]+1-cnt[mp[s[0]]][mp[s[1]]][37][mp[s[3]]]-cnt[mp[s[0]]][37][mp[s[2]]][mp[s[3]]];
            ans+=cnt[37][mp[s[1]]][mp[s[2]]][37]+1-cnt[mp[s[0]]][mp[s[1]]][mp[s[2]]][37]-cnt[37][mp[s[1]]][mp[s[2]]][mp[s[3]]];
            ans+=cnt[37][mp[s[1]]][37][mp[s[3]]]+1-cnt[mp[s[0]]][mp[s[1]]][37][mp[s[3]]]-cnt[37][mp[s[1]]][mp[s[2]]][mp[s[3]]];
            ans+=cnt[37][37][mp[s[2]]][mp[s[3]]]+1-cnt[mp[s[0]]][37][mp[s[2]]][mp[s[3]]]-cnt[37][mp[s[1]]][mp[s[2]]][mp[s[3]]];   
        }
    }
    if(d==1){
        cout<<ans/2;
        return 0;
    }
    cout<<ans/2;
}
#Verdict Execution timeMemoryGrader output
Fetching results...