Submission #1322952

#TimeUsernameProblemLanguageResultExecution timeMemory
1322952the_ZHERPIN (CEOI10_pin)C++20
25 / 100
106 ms10468 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<=5000){ 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]; } if(ans>0){ cout<<i<<"\n"; break; } } } 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...