View Code
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; struct node { int l, r; }p[303]; bool vis[303]; int n; bool cmp(node a, node b) { return a.r < b.r || a.r == b.r && a.l > b.l; } int main() { int i, j, k; int ll, rr; while( ~scanf("%d", &n) && n) { ll = 1003; rr = -1; for(i = 0; i < n; i++) { scanf("%d%d", &p[i].l, & p[i].r); if(p[i].l < ll) ll = p[i].l; if(p[i].r > rr) rr = p[i].r; } sort(p, p+n, cmp); int cnt, ans = -1; for(k = 0; k <= 4; k++) { cnt = 0; memset(vis, 0, sizeof(vis)); for(i = k+ll; i <= rr; i += 5) { for(j = 0; j < n; j++) { if(vis[j]) continue; if(i >= p[j].l && i < p[j].r)break;//注意左边取得到,右边取不到 } if(j == n) continue; vis[j] = 1; //printf("i = %d j = %d\n", i, j); cnt++; } if(cnt > ans ) ans = cnt; } printf("%d\n", ans); } return 0;