SuitNdtie

Infant Care Rooms EXAM01

Mar 28th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<vector>
  3. #include<stack>
  4. using namespace std;
  5.  
  6. typedef struct{
  7.     int age;
  8.     char level;
  9. }baby;
  10.  
  11. int main()
  12. {
  13.     int n;
  14.     scanf("%d",&n);
  15.    
  16.     vector<stack<baby> > hos;
  17.     for(int i=0;i<n;i++){
  18.         int age;
  19.         char level;
  20.         scanf("%d%c",&age,&level);
  21.         stack<baby> room;
  22.         room.push({age,level});
  23.         hos.push_back(room);
  24.        
  25.     }
  26.    
  27.     int index = 0;
  28.    
  29.     while(index < hos.size())
  30.     {
  31.         if(index == 0){
  32.             index++;
  33.             continue;
  34.         }
  35.         int agenow = hos[index].top().age;
  36.         int levelnow = hos[index].top().level;
  37.         int age1prev = hos[index-1].top().age;
  38.         char level1prev = hos[index-1].top().level;
  39.         if(index >= 3){
  40.             int age3prev = hos[index-3].top().age;
  41.             char level3prev = hos[index-3].top().level;
  42.             if(age3prev == agenow || level3prev == levelnow){
  43.                 hos[index-3].push({agenow,levelnow});
  44.                 hos[index].pop();
  45.                 if(hos[index].size() == 0){
  46.                     hos.erase(hos.begin()+index);
  47.                 }
  48.                 index -= 3;
  49.             }
  50.             else if(age1prev == agenow || level1prev == levelnow){
  51.                 hos[index-1].push({agenow,levelnow});
  52.                 hos[index].pop();
  53.                 if(hos[index].size() == 0){
  54.                     hos.erase(hos.begin()+index);
  55.                 }
  56.                 index -= 1;
  57.             }
  58.             else{
  59.                 index++;
  60.             }
  61.         }else if(age1prev == agenow || level1prev == levelnow){
  62.             hos[index-1].push({agenow,levelnow});
  63.             hos[index].pop();
  64.             if(hos[index].size() == 0){
  65.                 hos.erase(hos.begin()+index);
  66.             }
  67.             index -= 1;
  68.         }else{
  69.             index++;
  70.         }
  71.     }
  72.     printf("%d\n",hos.size());
  73.     for(int i=0;i<hos.size();i++){
  74.         printf("%d ",hos[i].size());
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment