Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<vector>
- #include<stack>
- using namespace std;
- typedef struct{
- int age;
- char level;
- }baby;
- int main()
- {
- int n;
- scanf("%d",&n);
- vector<stack<baby> > hos;
- for(int i=0;i<n;i++){
- int age;
- char level;
- scanf("%d%c",&age,&level);
- stack<baby> room;
- room.push({age,level});
- hos.push_back(room);
- }
- int index = 0;
- while(index < hos.size())
- {
- if(index == 0){
- index++;
- continue;
- }
- int agenow = hos[index].top().age;
- int levelnow = hos[index].top().level;
- int age1prev = hos[index-1].top().age;
- char level1prev = hos[index-1].top().level;
- if(index >= 3){
- int age3prev = hos[index-3].top().age;
- char level3prev = hos[index-3].top().level;
- if(age3prev == agenow || level3prev == levelnow){
- hos[index-3].push({agenow,levelnow});
- hos[index].pop();
- if(hos[index].size() == 0){
- hos.erase(hos.begin()+index);
- }
- index -= 3;
- }
- else if(age1prev == agenow || level1prev == levelnow){
- hos[index-1].push({agenow,levelnow});
- hos[index].pop();
- if(hos[index].size() == 0){
- hos.erase(hos.begin()+index);
- }
- index -= 1;
- }
- else{
- index++;
- }
- }else if(age1prev == agenow || level1prev == levelnow){
- hos[index-1].push({agenow,levelnow});
- hos[index].pop();
- if(hos[index].size() == 0){
- hos.erase(hos.begin()+index);
- }
- index -= 1;
- }else{
- index++;
- }
- }
- printf("%d\n",hos.size());
- for(int i=0;i<hos.size();i++){
- printf("%d ",hos[i].size());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment