RT
(老师的数据过了,洛谷数据超时两个点qwq)
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<map>
using namespace std;
map<char,int> w;
int n,a[100005],ans[100005];
int t[10000005],tt[10000005];
char s[1005];
int main(){
//freopen("notepad.in","r",stdin);
//freopen("notepad.out","w",stdout);
w['0']=0;w['1']=1;
w['2']=w['A']=w['B']=w['C']=2; w['3']=w['D']=w['E']=w['F']=3;
w['4']=w['G']=w['H']=w['I']=4; w['5']=w['J']=w['K']=w['L']=5;
w['6']=w['M']=w['N']=w['O']=6; w['7']=w['P']=w['R']=w['S']=7;
w['8']=w['T']=w['U']=w['V']=8; w['9']=w['W']=w['X']=w['Y']=9;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",s);
for(int j=strlen(s)-1,k=1;j>=0;j--){
if(s[j]!='-'&&s[j]!='Q'&&s[j]!='Z'){
a[i]+=k*w[s[j]];
k*=10;
}
}
t[a[i]]++;
}
sort(a+1,a+1+n);
int ok=0;
for(int i=1;i<=n;i++){
if(t[a[i]]>1){
ok=1;
if(tt[a[i]]==0){
tt[a[i]]=1;
if(a[i]/10000<100)printf("0");
if(a[i]/10000<10)printf("0");
printf("%d-",a[i]/10000);
if(a[i]%10000<1000)printf("0");
if(a[i]%10000<100)printf("0");
if(a[i]%10000<10)printf("0");
printf("%d %d\n",a[i]%10000,t[a[i]]);
}
}
}
if(ok==0)printf("No duplicates.");
return 0;
}