1351 我要4444

来源:互联网 发布:运营商封80端口 编辑:程序博客网 时间:2024/05/21 11:10
 
描述

M国的车牌号只有4位,别人都很想要8888,6666,3333等,但是Mr.L很奇怪,他想要4444……

M国的车牌号码颁发制度很简单,按顺序,从0000到9999共10000个号码,他们车也不多,而且随时可能有报废的车车牌号也跟着废弃了。

现在已经知道办理了K个牌照,从0000开始的连续的K个,Mr.L很不爽,由于某些原因,他要M天后才能办理牌照,作为管理员,你已经知道了这M天的牌照预约情况,一共有P条预约信息,预约有2种:

1. 今天有R个人预约办理牌照,那么会从0000开始找R个空位给与他们牌照;

2. 今天某个牌照要报废,直接把这个位置置空就是了。

3. 同一天内,总是先处理报废的事情,再处理新申请的事情。

Mr.L想知道M天后,他想要得牌照还在不在……

输入

第一行包含一个整数T,表示有T组数据

每组数据,第一行包含2个整数K和P,和题目描述一致,其中P<=50。

以下P行每行包含信息格式两种之一:

X N L 表示第X天有L个申请,N是标志字符

X D R 表示第X天有个编号为R的要报废,D是标志字符,保证数据合法。

保证输入数据中天数小的在前面出现,但不保证D一定在N前出现。

输出

处理完了P个预约后,返回4444这个号码还是不是空的,是输出“Yes”,否则输出“No”。

 

 

 

模拟题,按照题目要求来进行数据处理即可

#include <stdio.h>#include<string.h>main(){int a[10000];int bannumber,opnumber;int number,te;int i,j,up;char op;int day,car;int daytemp;int sum;scanf("%d",&number);for(te=1;te<=number;te++){memset(a,0,sizeof(a));scanf("%d %d",&bannumber,&opnumber);for(i=0;i<bannumber;i++)a[i]=1;daytemp=0;        sum=0;if(opnumber==0){  if(bannumber>=4444)printf("No\n");elseprintf("Yes\n");} else {for(up=0;up<opnumber;up++){scanf("%d %c %d",&day,&op,&car);     if((daytemp==0||daytemp==day)&&op=='N') {    sum+=car; daytemp=day;      } if((daytemp==0||daytemp==day)&&op=='D') {    a[car]=0; op='A';  }          if((daytemp!=day||daytemp==0)||up==opnumber-1) {   for(j=0;j<sum;j++)         for(i=0;i<10000;i++) {        if(a[i]==0){      a[i]=1;       break;} }  daytemp=0;     if(op=='N')      sum=car; else sum=0; } if((daytemp==0||daytemp==day)&&op=='D') {    a[car]=0;  } }if(a[4444]==0)printf("Yes\n");elseprintf("No\n");}}}


 

 

原创粉丝点击