Hello Programmers, In this post, you will know how to solve the HackerRank Angry Professor Solution. This problem is a part of the HackerRank Algorithms Series.

One more thing to add, don’t directly look for the solutions, first try to solve the problems of Hackerrank by yourself. If you find any difficulty after trying several times, then you can look for solutions.
HackerRank Angry Professor Solution
Task
A Discrete Mathematics professor has a class of students. Frustrated with their lack of discipline, the professor 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 arrived late (arrivalTime > 0).
Given the arrival time of each student and a threshhold number of attendees, determine if the class is cancelled.
Example
n = 5
k = 3
a = [-2, -1, 0, 1, 2]
The first 3 students arrived on. The last 2 were late. The threshold is 3 students, so class will go on. Return YES
.
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 a[i] minutes late.
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):
- int k: the threshold number of students
- int a[n]: the arrival times of the n students
Returns
- string: either
YES
orNO
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]) that describe the arrival times for each student.
Constraints
- 1 <= t <= 10
- 1 <= n <= 1000
- 1 <= k <= n
- -100 <= a[i] <= 100, where i belongs to [1, . . . ,n]
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 arrived on time (0 and -1). The class is not cancelled.
HackerRank Angry Professor Solution
Angry Professor Solution in C
#include<stdio.h> int main() { int count, i, K, N, T, time; scanf("%d", &T); while (T--) { scanf("%d %d", &N, &K); count = 0; for (i = 0; i < N; i++) { scanf("%d", &time); if (time <= 0) count++; } puts((count < K) ? "YES" : "NO"); } return 0; }
Angry Professor Solution in Cpp
#include <bits/stdc++.h> using namespace std; int main() { int a; cin >> a; for (int g=0; g<a; g++) { int b,c; cin >> b >> c; int num=0; for (int g=0; g<b; g++) { int d; cin >> d; if (d<=0) num++; } if (num>=c) { cout << "NO" << '\n'; } else cout << "YES" << '\n'; } return 0; }
Angry Professor Solution in Java
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.StringTokenizer; public class AngryProf { public static void main(String args[] ) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); PrintWriter w = new PrintWriter(System.out); int t = ip(br.readLine()); while(t-- > 0) { StringTokenizer st1 = new StringTokenizer(br.readLine()); int n = ip(st1.nextToken()); int k = ip(st1.nextToken()); StringTokenizer st2 = new StringTokenizer(br.readLine()); int a[] = new int[n]; for(int i=0;i<n;i++) a[i] = ip(st2.nextToken()); int count = 0; for(int i=0;i<n;i++) if(a[i]<=0) count++; w.println(count < k ? "YES" : "NO"); } w.close(); } public static int ip(String s){ return Integer.parseInt(s); } }
Angry Professor Solution in Python
for _ in xrange(input()): n, m = map(int, raw_input().split()) A = map(int, raw_input().split()) for x in A: if x <= 0: m -= 1 if m <= 0: print "NO" else: print "YES"
Angry Professor Solution using JavaScript
function processData(input) { input = input.split('\n'); var length = input.length; var N, K; var buf,j; for(var i = 1; i < length; i += 2){ count = 0; buf = input[i].split(" "); N = Number(buf[0]); K = Number(buf[1]); buf = input[i+1].split(" "); for(j = 0; j < N; ++j){ if(Number(buf[j] ) <= 0) ++count; } if(count >= K) console.log("NO"); else console.log("YES"); } } process.stdin.resume(); process.stdin.setEncoding("ascii"); _input = ""; process.stdin.on("data", function (input) { _input += input; }); process.stdin.on("end", function () { processData(_input); });
Angry Professor Solution in Scala
object Solution { def main(args: Array[String]) { val t = readInt() for (_ <- 1 to t) { val Array(n,k) = readLine().split(" ").map(_.toInt) val ts = readLine().split(" ").map(_.toInt) val studentsInTime = ts.count(_ <= 0) if (k <= studentsInTime) println("NO") else println("YES") } } }
Angry Professor Solution in Pascal
var id,t,n,k,i,sum,m:longint; begin readln(t); for id:=1 to t do begin readln(n,k); sum:=0; for i:=1 to n do begin read(m); if m<=0 then inc(sum); end; if sum<k then writeln('YES') else writeln('NO'); end; end.
Disclaimer: This problem (Angry Professor) is generated by HackerRank but the Solution is Provided by BrokenProgrammers. This tutorial is only for Educational and Learning purposes.
Next: HackerRank Picking Numbers Solution