Source Code
Problem: 1002 | User: cug_fish2008 | |
Memory: 39860K | Time: 719MS | |
Language: C++ | Result: Accepted |
- Source Code
#include <iostream> using namespace std; int map(char x); void Quicksort(int x[],int p,int r); class Num { public: Num(){again=0;} public: int again; }; int main() { int st[100000]; Num *sm=new Num[10000000]; int n; char ch[50]; cin>>n; int uu=0; for(int i=0;i<n;i++) { int sum=0; scanf("%s",ch); for(int j=0;ch[j]!=0;j++) { if(ch[j]!='-') {sum=10*sum+map(ch[j]);} } sm[sum].again++; if(sm[sum].again==2) {st[uu]=sum;uu++;} } Quicksort(st,0,uu-1); for(int i=0;i<uu;i++) printf("%d%d%d-%d%d%d%d %d/n", st[i]/1000000,(st[i]/100000)%10, (st[i]/10000)%10,(st[i]/1000)%10, (st[i]/100)%10,(st[i]/10)%10, st[i]%10,sm[st[i]].again); if(uu==0)cout<<"No duplicates."; return 0; } int map(char x) { if(x>='0'&&x<='9') return x-'0'; else if(x>='A'&&x<='P') return (x-'A')/3+2; else if(x>='R'&&x<='Y') return (x-'Q')/3+7; } void Quicksort(int x[],int p,int r) { if(p>=r)return ; int y=x[r]; int i=p-1; for(int j=p;j<=r-1;j++) { if(x[j]<=y) {i++;swap(x[i],x[j]);} } swap(x[i+1],x[r]); Quicksort(x,p,i); Quicksort(x,i+2,r); }