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 chenyuxiao at 2020-03-15 16:59:08 on Problem 2620
In Reply To:晕了,,老是WA Posted by:Essence_me at 2005-10-10 11:52:46
> #include <stdio.h>
> #include <search.h>
> #include <string.h>
> #include <stdlib.h>
> int stick[100000][2],index[100000];
> int sort_function(const void *a,const void *b)
> {
> 	if(stick[*(int*)a][0]>stick[*(int*)b][0])return 1;
> 	else if(stick[*(int*)a][0]==stick[*(int*)b][0]&&stick[*(int*)a][1]<stick[*(int*)b][1])return 1;
> 	else return -1;
> }
> 
> int main()
> {
> 	int n,m,i,num=0,real,max=-1;
> 	int mid=0,end=-1,p;
> 	char str[1000000];
> 	scanf("%d",&m);
> 	n=0;
> 	str[0]='\0';
> 	while(1)
> 	{
> 		    int ex;
>         	scanf("%d %d",&stick[n][0],&stick[n][1]);
>         	if(stick[n][0]==0&&stick[n][1]==0)break;
>        		if(stick[n][0]>stick[n][1])
>        		{
>        	       	 	ex=stick[n][0];
>                 	stick[n][0]=stick[n][1];
>                 	stick[n][1]=ex;
>                 
>         	}    
>         	index[n]=n;
>         	n++;
> 	}
> 	qsort(index,n,sizeof(int),sort_function);
> 	for(i=0;i<n;i++)
> 	{
> 		if(max>=m)break;
> 		if(mid>=stick[index[i]][0]&&mid<=stick[index[i]][1])
> 		{
> 			if(stick[index[i]][1]>end)
> 			{
> 				real=1;
> 				end=stick[index[i]][1];
> 				p=index[i];
> 			}
> 		}
> 		else if(end!=-1)
> 		{
> 			mid=end;
> 			end=-1;
> 			real=0;
> 			sprintf(str+strlen(str),"%d %d\n",stick[p][0],stick[p][1]);
> 			num++;
> 			if(max==-1||stick[p][1]>max)max=stick[p][1];
> 			if(mid>=stick[index[i]][0]&&mid<=stick[index[i]][1])
> 			{
> 
> 					end=stick[index[i]][1];
> 					p=index[i];
> 					real=1;
> 			}
> 		}
> 	}
> 	if(real)
> 	{
> 		sprintf(str+strlen(str),"%d %d\n",stick[p][0],stick[p][1]);
> 		if(max==-1||max<stick[p][1])max=stick[p][1];
> 	}
> 	if(max<m)printf("No solution\n");
>     	else
>     	{
> 		printf("%d\n",num+1);
> 		printf("%s",str);
>     	}
> 
>     	system("PAUSE");
>     	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