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

查不出错,请大牛指教(内附代码)

Posted by 1120101777 at 2011-07-10 22:37:45 on Problem 3347
不知道为什么WA,给组测试用例也行

#include <stdio.h>
struct ZB
{
	int start;
	int end;
	int R;
	int jd;
};
struct ZB S[60];
void qingkong()
{
	int i;
	for(i=0;i<60;i++)
	{
		S[i].start=0;
		S[i].end=0;
		S[i].R=0;
	}
}
main()
{
	int i,j,n,r1,l1,a,JD,r,b[60],t;
	while(1)
	{
		scanf("%d",&n);
		if(n==0) break;
		qingkong();
		r1=0;
		l1=0;
		for(i=0;i<n;i++)
		{	
			t=0;
           scanf("%d",&r);
		   if(i==0)
		   {
		   r1=r;
		   S[0].start=0;
		   S[0].end=2*r;
		   S[0].R=r;
		   S[0].jd=r;
		   l1=2*r;
		   JD=r;
		   }
		   else{
			   a=r-r1;
			   if(a>0){
						JD=JD+2*r1;
						S[i].start=JD-r;
				        S[i].end=JD+r;
						S[i].jd=JD;
						l1=S[i].end;
						S[i].R=r;
						r1=r;
			   }
			   if(a<0){
				        if(r>S[i-1].R)
						{
				        S[i].start=JD+r;
				        S[i].end=JD+3*r;
						S[i].R=r;
						if(S[i].end>l1)
						{
							l1=S[i].end;
							JD=JD+2*r;
							r1=r;
							S[i].jd=JD+2*r;
						}
						else S[i].jd=S[i-1].jd+2*S[i-1].R;
						}
						else{
							S[i].start=S[i-1].jd+r;
							S[i].end=S[i-1].jd+3*r;
							S[i].R=r;
							S[i].jd=S[i-1].jd+2*r;
						if(S[i].end>l1)
						{
							l1=S[i].end;
							JD=JD+2*r;
							r1=r;
						}
						}
					}
			   if(a==0){
				   S[i].start=JD+r;
				        S[i].end=JD+3*r;
						S[i].R=r;
						l1=S[i].end;
						JD=JD+2*r;
			   }
			   }
			}
		  for(i=0;i<n;i++)
		   {
			  for(j=0;j<n;j++)
			   if(S[i].R<S[j].R)
				  {
                    if(S[i].start<=S[j].start&&S[i].end<=S[j].end&&S[j].start<=S[i].end)
						S[i].end=S[j].start;
					if(S[i].start>=S[j].start&&S[i].end>=S[j].end&&S[i].start<=S[j].end)
						S[i].start=S[j].end;
					if(S[i].start>=S[j].start&&S[i].end<=S[j].end)
					{	S[i].start=-1; S[i].end=0;}
				  }
			   if(S[i].start!=-1&&S[i].end!=0)   {b[t]=i;t++;}
		   }
	 for(i=0;i<t-1;i++)
		 printf("%d ",b[i]+1);
	 printf("%d\n",b[i]+1);
	}
}




				        


					

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