In: Computer Science
A Discrete Mathematics professor has a class of students. Frustrated with their lack of discipline, he decides to cancel class if fewer than some number of students are present when class starts. Arrival times go from on time (arrivalTime < 0) to arrival late (arrivalTime > 0).Given the arrival time of each student and a threshhold number of attendees, determine if the class is canceled.
Input Format
The first line of input contains t, the number of test cases.
Each test case consists of two lines.
The first line has two space-separated integers, n and k, the
number of students (size of a) and the cancellation
threshold.
The second line contains n space-separated integers (a[1],
a[2],....,a[n]) describing the arrival times for each student.
Note: Non-positive arrival times (a[i] < 0) indicate the student arrived early or on time; positive arrival times (a[i] > 0) ) indicate the student arrived minutes late.
For example, there are n=6 students who arrive at times a = [-1,-1,0,0,1,1]. Four are there on time, and two arrive late. If there must be for class to go on, in this case the class will continue. If there must be k = 4 for class th
, then class is cancelled.
Function Description
Complete the angryProfessor function in the editor below. It must return YES if class is cancelled, or NO otherwise.
angryProfessor has the following parameter(s):
Constraints
Output Format
For each test case, print the word YES if the class is canceled or NO if it is not.
Note
If a student arrives exactly on time (ai = 0), the student is
considered to have entered before the class started.
Sample Input
2 4 3 -1 -3 4 2 4 2 0 -1 2 1
Sample Output
YES NO
Explanation
For the first test case, k = 3. The professor wants at least 3 students in attendance, but only 2 have arrived on time (-3 and -1 ) so the class is cancelled.
For the second test case, k = 2. The professor wants at least 2 students in attendance, and there are 2 who have arrived on time (0 and -1 ) so the class is not cancelled.
#include <bits/stdc++.h>
using namespace std;
vector<string> split_string(string);
// Complete the angryProfessor function below.
string angryProfessor(int k, vector<int> a) {
}
int main()
{
ofstream fout(getenv("OUTPUT_PATH"));
int t;
cin >> t;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
for (int t_itr = 0; t_itr < t; t_itr++) {
string nk_temp;
getline(cin, nk_temp);
vector<string> nk = split_string(nk_temp);
int n = stoi(nk[0]);
int k = stoi(nk[1]);
string a_temp_temp;
getline(cin, a_temp_temp);
vector<string> a_temp = split_string(a_temp_temp);
vector<int> a(n);
for (int i = 0; i < n; i++) {
int a_item = stoi(a_temp[i]);
a[i] = a_item;
}
string result = angryProfessor(k, a);
fout << result << "\n";
}
fout.close();
return 0;
}
vector<string> split_string(string input_string) {
string::iterator new_end = unique(input_string.begin(), input_string.end(), [] (const char &x, const char &y) {
return x == y and x == ' ';
});
input_string.erase(new_end, input_string.end());
while (input_string[input_string.length() - 1] == ' ') {
input_string.pop_back();
}
vector<string> splits;
char delimiter = ' ';
size_t i = 0;
size_t pos = input_string.find(delimiter);
while (pos != string::npos) {
splits.push_back(input_string.substr(i, pos - i));
i = pos + 1;
pos = input_string.find(delimiter, i);
}
splits.push_back(input_string.substr(i, min(pos, input_string.length()) - i + 1));
return splits;
}
Solution :
string angryProfessor(int k, vector<int> a)
{
int count = 0;
// it will count the number
of students who arrives on or before arrival time ( means those who
are not late )
for(int i=0;i<a.size();i++)
//
iterating for all student's arrival time
{
if(a[i]<=0)
// if
arrival time is less than or equals to 0, means student is not
late
count++;
// then
incrementing the count value
}
string result;
// it will store the result,
whether the class is cancelled or not
if(count<k)
// if threshhold number of
attendees is still greater than count value
result = "YES";
// then the class will be cancelled
else
// otherwise
result = "NO";
// class be not be cancelled
return result;
// returning the result value
as a string
}
Output : I am providing output only for your confirmation regarding the output. Above provided code is correct and working fine.