UVALive - 8172 (Cats and Fish) 模拟

思路:模拟,记录每个猫吃当前鱼的起始时间
遍历时间 x x x,模拟每个猫吃鱼的状态
注意:最后一次 x x x时间拿鱼准备吃还是整条鱼

#include
#include
#include
using namespace std;
const int MAXN=1e3+7;
int n,m,x;
int a[MAXN], p[MAXN]; //p 上一次拿到的time
int main(){
	while(~scanf("%d%d%d",&m,&n,&x)){
		int left=m;int now=0;
		memset(p,0,sizeof(p)); 
		for(int i=1;i<=n;++i)scanf("%d",a+i); 
		sort(a+1,a+n+1);
		for(int i=1;i<=n;++i)if(left){p[i]=0;--left;++now;} 
		for(int i=1;i<=x;++i){
			for(int j=1;j<=n;++j){ 
				if(i-p[j]==a[j]) {
					if(left&&i!=x){--left;p[j]=i;} 
					else --now;
				}
			}  
		} 
		printf("%d %d\n",left,now); 
	} 
	return 0;
} 

你可能感兴趣的:(ACM)