#include<stdio.h> #include<string.h> #include<stdlib.h> int fff[100002][11]; int max (int x,int y,int z){ if(x>=y&&x>=z) return x; if(y>=x&&y>=z) return y; if(z>=x&&z>=y) return z; } int max(int x,int y){ if(x>y) return x; return y; } void main(){ int n; while(scanf("%d",&n)!=EOF){ if(n==0) break; memset(fff,0,sizeof(fff)); int x,T; int maxt=0; for(int i=0;i<n;++i){ scanf("%d %d",&x,&T); fff[T][x]++; if(maxt<T) maxt=T; } for(int a=maxt-1;a>=0;--a){ for(int b=0;b<=10;++b){ if(b==0) fff[a][b]=fff[a][b]+max(fff[a+1][b],fff[a+1][b+1]); else if(b==10) fff[a][b]=fff[a][b]+max(fff[a+1][b-1],fff[a+1][b]); else fff[a][b]=fff[a][b]+max(fff[a+1][b-1],fff[a+1][b],fff[a+1][b+1]); } } printf("%d\n",fff[0][5]); } }
杭电ACM 1176题
最新推荐文章于 2020-02-28 18:18:18 发布