hdu 3697 贪心

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define inf 0x3fffffff
#define N 1100
struct node {
int l,r;
}f[N];
int ff[N];
double d;
int Min(int aa,int bb) {
return aa>bb?bb:aa;
}
int Max(int aa,int bb) {
return aa>bb?aa:bb;
}
int cmp(const void *a,const void *b)
{
    return (*(struct node *)a).r-(*(struct node *)b).r;
}
int main() {
     int n,i,j;
     int minn,maxx,tot,kk,k,ss,endd;
     while(scanf("%d",&n),n) {
            minn=inf;
            maxx=-1;
        for(i=0;i<n;i++) {
            scanf("%d%d",&f[i].l,&f[i].r);
            minn=Min(f[i].l,minn);
            maxx=Max(f[i].r,maxx);
        }
         qsort(f,n,sizeof(f[0]),cmp);
        endd=0;
    for(i=minn;i<=maxx;i++) {
        tot=0;
        memset(ff,0,sizeof(ff));
        for(j=0;j<n;j++) {
         kk=(f[j].l-i)/5;
         if(kk*5+i!=f[j].l)
            kk=kk*5+i+5;
        else
            kk=f[j].l;
         k=(f[j].r-i)/5;
         if(k*5+i==f[j].r)
            k=f[j].r-5;
         else
            k=5*k+i;
            k=Min(k,kk);
          //  printf("k=%d\n",k);
      for(ss=k;ss<f[j].r;ss+=5) {
         if(ff[ss]==0&&ss>=f[j].l&&ss<f[j].r) {
            tot++;
            ff[ss]=1;
            break;
         }
        }
        }
    // printf("i=%d %d\n",i,tot);
        if(endd<tot)
            endd=tot;
    }
    printf("%d\n",endd);
     }
return 0;}

posted @ 2014-10-11 18:17  HYDhyd  阅读(166)  评论(0编辑  收藏  举报