pku 1002

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);
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值