一個教授有一班N個學生的離散數學課,
由於學生缺乏紀律讓他感到很挫折,
玻璃心破碎的他決定如果出席的人數少於K人的話,
他就不上課了!
輸入data:
給定T個testcases,N(學生數量),K(是否上課的門檻人數)
以及每個學生到課的時間點(小於0早到,大於0遲到)。
注意等於0仍視作在上課前到課。
例如:
2
4 3
-1 -3 4 2
4 2
0 -1 2 1
表示有兩個test case,case1:
4名學生,3名以上開課,
前2名學生早到,後2名學生遲到。
case2:
4名學生,2名以上開課,
前2名學生分別準時及早到,後2名學生遲到。
輸出:
如果該case為取消上課就印出YES,
否則印出NO,
如上例輸出應為
YES
NO
解題:
網站預設C Code讀進來的的陣列a[n]會在迴圈中被重置,
故直接在迴圈內進行判斷,
計算早到+準時到的學生數量(cnt),
如果k > cnt則此testcase為取消上課,
紀錄到陣列result中,
隨後在外面判斷進行印出YES/NO出來即可。
Code:
#include <math.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <assert.h> #include <limits.h> #include <stdbool.h> int main(){ int t; scanf("%d",&t); bool result[t]; for(int a0 = 0; a0 < t; a0++){ int n; int k; scanf("%d %d",&n,&k); int a[n], cnt = 0; for(int a_i = 0; a_i < n; a_i++){ scanf("%d",&a[a_i]); if(a[a_i] <= 0) cnt++; } if (k > cnt) result[a0] = true; else result[a0] = false; } for(int a0 = 0; a0 < t; a0++){ if(result[a0]) printf("YES\n"); else printf("NO\n"); } return 0; }
沒有留言:
張貼留言