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

Re:这里的数据都过了,还是WA,想不明白,有谁给一下测试数据

Posted by BJ051155 at 2007-07-24 11:17:27 on Problem 2969
In Reply To:这里的数据都过了,还是WA,想不明白,有谁给一下测试数据 Posted by:BJ051155 at 2007-07-24 11:17:17
> #include <iostream>
> #include <string.h>
> using namespace std;
> int cmp(const void* a,const void* b)
> {
> 	return *(char *)b-*(char *)a;
> }
> int main(int argc, char* argv[])
> {
> 	bool sign=0;
> 	char a[1005],div0[1005],div1[1005],div2[1005];
> 	cin>>a;
> 	qsort(a,strlen(a),sizeof(a[0]),cmp);
> 	int count0=0,count5=0,p=0,q=0,r=0;
> 	for(int i=0;i<strlen(a);i++)
> 	{
> 		if(a[i]=='0')
> 			count0++;
> 		if(a[i]=='5')
> 			count5++;
> 	}
> 	if(!count0&&!count5)
> 		cout<<"impossible"<<endl;
> 	else
> 	{
> 		for(i=0;i<strlen(a);i++)
> 		{
> 			if((a[i]-48)%3==0)
> 				div0[r++]=a[i];
> 			if((a[i]-48)%3==1)
> 				div1[p++]=a[i];
> 			if((a[i]-48)%3==2)
> 			{
> 				if(a[i]=='5'&&!sign&&!count0)
> 				{
> 					sign=1;
> 					continue;
> 				}
> 				div2[q++]=a[i];
> 			}
> 		}
> 		if(count0)
> 		{
> 			if(p%3==1&&q%3==0)
> 				p--;
> 			if(p%3==2&&q%3==0)
> 				q--;
> 			if(p%3==2&&q%3==1)
> 				p--;
> 			if(p%3==0&&q%3==1)
> 				q--;
> 			if(p%3==1&&q%3==2)
> 				q--;
> 			if(p%3==0&&q%3==2)
> 				p--;
> 			if(((p==0&&q==0)||q<0||p<0)&&r==count0)
> 			{
> 				cout<<"0"<<endl;
> 				return 0;
> 			}
> 		}
> 		else
> 		{
> 			if(q==0)
> 			{
> 				if(p==0)
> 				{
> 					cout<<"impossible"<<endl;
> 					return 0;
> 				}
> 				if(p%3==2)
> 					p--;
> 				else
> 				{
> 					if(p%3==0)
> 						p-=2;
> 				}
> 			}
> 			else
> 			{
> 				if(p==0)
> 				{
> 					if(q%3==1)
> 						q-=2;
> 					else
> 					{
> 						if(q%3==0)
> 							q-=1;
> 					}
> 					if(q<0)
> 					{
> 						cout<<"impossible"<<endl;
> 						return 0;
> 					}
> 				}
> 				else
> 				{
> 					if(p%3==1&&(q+1)%3==0)
> 						p--;
> 					if(p%3==2&&(q+1)%3==0)
> 						q--;
> 					if(p%3==2&&(q+1)%3==1)
> 						p--;
> 					if(p%3==0&&(q+1)%3==1)
> 						q--;
> 					if(p%3==1&&(q+1)%3==2)
> 						q--;
> 					if(p%3==0&&(q+1)%3==2)
> 						p--;
> 				}
> 			}
> 		}
> 		int p1=0,q1=0,r1=0;
> 		while(p1<p&&q1<q&&r1<r)
> 		{
> 			if(div1[p1]>div2[q1]&&div1[p1]>div0[r1])
> 				cout<<div1[p1++];
> 			else
> 				if(div2[q1]>div0[r1])
> 					cout<<div2[q1++];
> 				else 
> 					cout<<div0[r1++];
> 		}
> 		if(p1==p)
> 		{
> 			while(q1<q&&r1<r)
> 			{
> 				if(div2[q1]>div0[r1])
> 					cout<<div2[q1++];
> 				else 
> 					cout<<div0[r1++];
> 			}
> 			while(q1<q)
> 				cout<<div2[q1++];
> 			while(r1<r)
> 				cout<<div0[r1++];
> 		}
> 		if(q1==q)
> 		{
> 			while(p1<p&&r1<r)
> 			{
> 				if(div1[p1]>div0[r1])
> 					cout<<div1[p1++];
> 				else 
> 					cout<<div0[r1++];
> 			}
> 			while(p1<p)
> 				cout<<div1[p1++];
> 			while(r1<r)
> 				cout<<div0[r1++];
> 		}
> 		if(r1==r)
> 		{
> 			while(p1<p&&q1<q)
> 			{
> 				if(div1[p1]>div2[q1])
> 					cout<<div1[p1++];
> 				else 
> 					cout<<div2[q1++];
> 			}
> 			while(p1<p)
> 				cout<<div1[p1++];
> 			while(q1<q)
> 				cout<<div2[q1++];
> 		}
> 		if(sign)
> 			cout<<"5";
> 		cout<<endl;
> 
> 	}
> 	return 0;
> }
> 

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