1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #define bool char 5 bool blist[200005]; 6 int n,end; 7 int main(){ 8 char in[256],*p; 9 int i,mess,pre,del; 10 memset(blist,0,sizeof(blist)); 11 scanf("%d",&n); 12 end=n; 13 getchar(); 14 for(i=1;i<=n;i++){ 15 blist[i]=1; 16 } 17 while(gets(in)){ 18 if(in[0]>= 'A' && in[0]<= 'Z'){ 19 in[0]+=32; 20 } 21 switch(in[0]){ 22 case 'c': 23 printf("%d book",n); 24 if(n != 0 && n != 1){ 25 putchar('s'); 26 } 27 putchar('\n'); 28 break; 29 case 'e': 30 if(n == 0 || n == 1){ 31 puts("0"); 32 continue; 33 } 34 mess=0; 35 for(i=1;!blist[i];i++); 36 pre=i; 37 for(i++;i<=end;i++){ 38 if(blist[i]){ 39 mess+=(i-pre-1); 40 pre=i; 41 } 42 } 43 printf("%d\n",mess); 44 break; 45 case 'a': 46 if(n==0){ 47 end=1; 48 n=1; 49 blist[1]=1; 50 }else{ 51 end++; 52 n++; 53 blist[end]=1; 54 } 55 break; 56 case 'd': 57 p=strtok(in," "); 58 p=strtok(NULL," "); 59 del=atoi(p); 60 if(blist[del]==0){ 61 puts("Not found"); 62 }else{ 63 blist[del]=0; 64 n--; 65 if(del==end && n!=0){ 66 for(;!blist[end];end--); 67 } 68 } 69 break; 70 case 'q': 71 if(n==0){ 72 puts("No book"); 73 } 74 for(i=1;i<=end;i++){ 75 if(blist[i]){ 76 printf("%d\n",i); 77 } 78 } 79 break; 80 default: 81 puts("Invalid command"); 82 } 83 } 84 return 0; 85 }