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; }