CO_ADD - EDITORIAL

Problem

Problem https://www.codechef.com/problems/CO_ADD

CODE RUSH 1.0 Contest Link:https://www.codechef.com/CRSH2020

Author: Krish Murarka
Tester: Krish Murarka
Editorialist: Krish Murarka

DIFFICULTY:

EASY-Medium

PREREQUISITES:

STACK and Dynamic Array.

PROBLEM:

If you fulfill the admission of any student and there exist some people (ranked 1 or more) who have ranked earlier but haven’t arrived at the college yet, then those people are said to have missed their admission. If at some point of time there exists a set of people that have missed their admission earlier and the student who had their admission most recently among them (later than others in that set) say student X is now available then X is given the priority to get admission over any other student.

EXPLANATION:

the admission of the student who ranked first (so if a student having 1 is available then that student can get the admission) otherwise you look for the next available student.even if any student in that set Y other than X is available and X is not available then you start admissions of the people who have not yet missed their admission in their order of ranking. You are given the order in which people arrive at the college and have to print the order of their admissions.

SOLUTION

Setters Solution

#include

#include

#include

using namespace std;

void solution(){

int n, x, i;

cin >> n;

stack<int> stack;

vector<bool> vector;

for (int j = 0; j < n+1; ++j){

  vector.push_back(false);

}       

i = 0;

while (n--) {

  cin >> x;           

  if (i < x) {

    cout << x << " ";                

    while (++i < x){

      stack.push(i);

    }

  }            

  vector[x] = true;            

  while (!stack.empty() and vector[stack.top()]) {

    cout << stack.top() << " ";

    stack.pop();

  }

}        

    while (!stack.empty()){

      cout << stack.top() << " ";

      stack.pop();

    }

    cout << endl;

}

int main() {

ios_base::sync_with_stdio(false);

cin.tie(nullptr);

cout.tie(nullptr);   

  solution();

}

1 Like

brother can u please explain the logic you have used to solve the question
i cant understand the question