| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:晕了,,老是WAIn 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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator