uvaoj105

uvaoj105


        题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=41



    刷一下存在感,,,看到uva1077 ,也是醉了。。

       这个题不需要坐标离散化, 直接把数据打到数组上就可以了。 ( 值<10000 )直接开数组

       剩下的就是细节了 ,开始用  while(scanf("%d %d %d",&l,&h,&r) != EOF))  ----->WA

       估计是停不下来,就直接写到  char 数组上了 ,gets 很好用,空格不结束 ,回车结束。



       

#include<stdio.h>
#include<string.h>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
int a[100000];
int main()
{
	int maxr=-1,minl = 1000000,l,h,r,i;

     char s[10];
	while(gets(s))
	{
		
		l = h =r = 0;
		if(strlen(s) == 0 ) break;
	
       for(i= 0;i<strlen(s);i++)
	   {
		   if(s[i] ==' ')break;
		   l = l*10 + s[i]-'0';
		   
	   }
       for(i++;i<strlen(s);i++)
	   {if(s[i] ==' ')break;
		   h = h*10 + s[i]-'0';
		   
	   }
	    for(i++;i<strlen(s);i++)
	   { if(s[i] ==' ')break;
		   r = r*10 + s[i]-'0';
		  
	   }
		for( i = l;i<r;i++)
			a[i] = max(a[i] , h);
		maxr = max(maxr , r);
		minl = min(minl , l);


	}

    
	for(i = minl ;i<maxr;i++)
		if(i == minl )
			printf("%d %d ",i ,a[i]);
		else if( a[i] != a[i-1])
		{
			printf("%d %d ",i,a[i]);
		}

		printf("%d 0\n",maxr);



		return 0;
}

      

你可能感兴趣的:(c,ACM)