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

help!!!

Posted by plumage at 2005-04-22 20:33:33 on Problem 1014
#include<iostream.h>
#include<fstream.h>

void main()
{
	fstream fin("in.txt",ios::in||ios::out);
	int i,j=0,can=0,k;
	long half,temp;
	long marbles[8];

	int r[8];
	int t;
	marbles[0]=0;
	while(1)
	{
		////input
		fin>>marbles[1]>>marbles[2]>>marbles[3]>>marbles[4]>>marbles[5]>>marbles[6];
//		cin>>marbles[1]>>marbles[2]>>marbles[3]>>marbles[4]>>marbles[5]>>marbles[6];

		////judge whether go on by input 
		if(marbles[1]==0 && marbles[2]==0 && marbles[3]==0 && marbles[4]==0 && marbles[5]==0 && marbles[6]==0)
			break;
		half=0;
		can=0;

		j++;		//time of case
	
		for(i=1;i<=6;i++)
		{
			marbles[i]=marbles[i]%2; 
			marbles[i]*=i;//store the resting
			r[7-i]=marbles[i];
			half+=marbles[i];
		}	

 
		if((half%2)==0)//half*2==0
		{
			half/=2;//half the rest of dividing

			for(i=1;i<=6;i++)//whether can find value "half" by added the value of r[]  
			{
				if(r[i]==0)
					continue;

				t=1;
				marbles[t]=i;//record the path
				temp=half-r[i];

				k=i;
				if(temp>=0)
				{
					if(temp==0)//end 
					{
						can=1;
						break;
					}
					
					for(k+=1;k<=6;k++)
						if(r[k]!=0)
							break;
							

					if(k<6)
						k++;//next item
					else
						break;

					while(1)
					{ 
						if(k<=6)
						{
							temp-=r[k];
 
							if(temp>=0)
							{
								if(temp==0)
								{
									can=1;
									break;//?
								}
								t++;
								marbles[t]=k;								
							}
							else
								temp+=r[k];
						
							k++;
						}
						else//k>6
						{
						//	k=1+marbles[t];
					
							k=marbles[t];	//the last has recorded
							
							temp+=r[k];		//back one step
							t--;
							k++;
						//	k=marbles[t]+1;
 
							if(marbles[t]==i)
								break;
						
						}//end else
					}//end while
				}
			}//end for
		}//end (half%2)==0
 
		if(can==1)
		{
			if(j!=1)
				cout<<endl;
			cout<<"Collection #"<<j<<":"<<endl;
			cout<<"Can be divided."<<endl;
			
		}
		else
		{			
			if(j!=1)
				cout<<endl;

			cout<<"Collection #"<<j<<":"<<endl;
			cout<<"Can't be divided."<<endl;	
		}
/**/
	}
}

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