Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

那位 仁兄 行个 好 ,帮 我 好好看吧!!非常感谢!一直超时!我交了20多遍了!!

Posted by cug_fish2008 at 2008-11-25 22:37:53 on Problem 1002
#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;
	cin>>n;
	int uu=0;
	for(int i=0;i<n;i++)
	{
		int j=0;
		int sum=0;
		do
		{
			cin>>ch;
			if(ch!='-')
			{sum=sum*10+map(ch);j++;}			
		}while(j!=7);
		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);
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator