//典型的活动会场安排问题 //c中竟然不能用bool? #include <stdio.h> #include <stdlib.h> #define csMax 5001 struct data { int length; int weight; int flag; }; struct data sticks[csMax]; //c中struct不能省,c++中可以! int cmp(const void *a, const void *b) { struct data *c = (struct data *)a; //注意struct不能省! struct data *d = (struct data *)b; //! if((c->length) == (d->length)) return c->weight - d->weight; else return c->length - d->length; } int main() { int i, j; int mixT, tempW; int nNums; while(2 == scanf("%d %d",&sticks[0].length, &sticks[0].weight) ) { if(sticks[0].length ==-1 || sticks[0].weight == -1) break; for(i = 1; ; i++) { scanf("%d %d", &sticks[i].length, &sticks[i].weight); if(sticks[i].length == 0 || sticks[i].weight == 0) break; sticks[i].flag=0; } nNums = i; qsort(sticks, nNums, sizeof(sticks[0]), cmp); mixT = 0; for(i = 0; i < nNums; i ++) { if(!sticks[i].flag) { mixT ++; tempW = sticks[i].weight; for(j = i + 1; j < nNums; j ++) { if((!sticks[j].flag) && (sticks[j].weight >= tempW)) { sticks[j].flag = 1; tempW = sticks[j].weight; } } } } printf("%d/n", mixT); } return 0; }