fork download
  1. /*
  2.  * Люди стоят в очереди, но никогда не уходят из её начала, зато могут приходить в конец и уходить оттуда.
  3.  * Более того, иногда некоторые люди могут прекращать и начинать беспокоиться из-за того, что очередь не продвигается.
  4.  *
  5.  * Реализуйте обработку следующих операций над очередью:
  6.  * WORRY i: пометить i-го человека с начала очереди (в нумерации с 0) как беспокоящегося;
  7.  * QUIET i: пометить i-го человека как успокоившегося;
  8.  * COME k: добавить k спокойных человек в конец очереди;
  9.  * COME -k: убрать k человек из конца очереди;
  10.  * WORRY_COUNT: узнать количество беспокоящихся людей в очереди.
  11.  * Изначально очередь пуста.
  12.  *
  13.  * Формат ввода
  14.  * Количество операций Q, затем описания операций.
  15.  * Для каждой операции WORRY i и QUIET i гарантируется, что человек с номером i существует в очереди на момент операции.
  16.  * Для каждой операции COME -k гарантируется, что k не больше текущего размера очереди.
  17.  *
  18.  * Формат вывода
  19.  * Для каждой операции WORRY_COUNT выведите одно целое число — количество беспокоящихся людей в очереди.
  20. */
  21.  
  22.  
  23. #include <iostream>
  24. #include <string>
  25. #include <vector>
  26.  
  27. using namespace std;
  28.  
  29. int main(){
  30. int Q=0;
  31. cin >> Q;
  32. vector<bool> crowd(0,0);
  33. string command=""s;
  34. unsigned number=0;
  35. int worry=0;
  36. int persCome=0;
  37.  
  38. while ( Q>0 ){
  39. cin>>command;
  40. if(command=="WORRY_COUNT"s){
  41. for(bool i :crowd){
  42. if(i){
  43. ++worry;
  44. }
  45. }
  46. cout<<worry<<endl;
  47. worry=0;
  48. }
  49. if(command=="WORRY"s){
  50. cin>>number;
  51. if(number < crowd.size()){
  52. crowd.at(number)=true;
  53. }
  54. }
  55. if(command=="QUIET"s){
  56. cin>>number;
  57. if(number<crowd.size()){
  58. crowd.at(number)=false;
  59. }
  60. }
  61. if(command=="COME"s){
  62. cin>>persCome;
  63. int size = crowd.size()+persCome;
  64. if(size<=0){
  65. crowd.clear();
  66. }
  67. if(size>crowd.size()){
  68. crowd.resize(size,false);}
  69. else{crowd.resize(size);}
  70. }
  71.  
  72. --Q;
  73. }
  74.  
  75. return 0;
  76. }
Success #stdin #stdout 0s 5456KB
stdin
Standard input is empty
stdout
Standard output is empty