ACPrimer

POJ 1002 487-3279

May 26th, 2012
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. include <stdio.h>
  2. #include <memory.h>
  3. #include <stdlib.h>
  4.  
  5. const int maxn=100005;
  6. int a[maxn],map[128];
  7. int cmp(const void *a,const void *b)
  8. {
  9.     return *(int *)a-*(int *)b;
  10. }
  11. void init()
  12. {
  13.     memset(map,-1,sizeof(map));
  14.     map['A']=map['B']=map['C']=2;
  15.     map['D']=map['E']=map['F']=3;
  16.     map['G']=map['H']=map['I']=4;
  17.     map['J']=map['K']=map['L']=5;
  18.     map['M']=map['N']=map['O']=6;
  19.     map['P']=map['R']=map['S']=7;
  20.     map['T']=map['U']=map['V']=8;
  21.     map['W']=map['X']=map['Y']=9;
  22.     for(int i='0';i<='9';i++) map[i]=i-'0';
  23. }
  24. int trans(char s[])
  25. {
  26.     int ans=0,i;
  27.     for(i=0;s[i];i++) if(map[s[i]]!=-1)
  28.         ans=ans*10+map[s[i]];
  29.     return ans;
  30. }
  31. int main()
  32. {
  33.     int n,i,ans=0,p,cnt;
  34.     char s[125];
  35.     init();
  36.     scanf("%d",&n);
  37.     for(i=0;i<n;i++)
  38.     {
  39.         scanf("%s",s);
  40.         a[i]=trans(s);
  41.     }
  42.     qsort(a,n,sizeof(a[0]),cmp);
  43.     a[n]=-1;
  44.     p=a[0]; cnt=1;
  45.     for(i=1;i<=n;i++) if(p==a[i])
  46.         cnt++;
  47.     else
  48.     {
  49.         if(cnt>1) { ans=1; printf("%03d-%04d %d\n",p/10000,p%10000,cnt); }
  50.         cnt=1;
  51.         p=a[i];
  52.     }
  53.     if(!ans) printf("No duplicates.\n");
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment