diff options
Diffstat (limited to 'find_student_replace_chalk.c')
-rw-r--r-- | find_student_replace_chalk.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/find_student_replace_chalk.c b/find_student_replace_chalk.c new file mode 100644 index 0000000..da7bcd5 --- /dev/null +++ b/find_student_replace_chalk.c @@ -0,0 +1,35 @@ +// 1894. Find the Student that Will Replace the Chalk +#include "leetcode.h" + +/* + * there are 'n' students in a class numbered from 0 to 'n - 1'. the teacher + * will give each student a problem starting with the student number 0, then the + * student number 1, and so on until the teach reaches the student number 'n - + * 1'. after that the teach will restart the processes, starting with the + * student number 0 again. you are given a 0-indexed integer array 'chalk' and + * an integer 'k'. there are initially 'k' pieces of chalk. when the student + * number 'i' is given a problem to solve, they will use 'chalk[i]' pieces of + * chalk to solve that problem. however, if the current number of chalk pieces + * is strictly less than 'chalk[i]', then the student number 'i' will be asked + * to replace the chalk. return the index of the student that will replace the + * chalk pieces. + */ + +int chalkReplacer(int *chalk, int chalkSize, int k) { + int sum = 0; + for (int i = 0; i < chalkSize; i++) + sum += chalk[i]; + int rem = k % sum; + for (int i = 0; i < chalkSize; i++) { + rem -= chalk[i]; + if (rem < 0) + return i; + } + return -1; +} + +int main() { + int c1[] = {5, 1, 5}, c2[] = {3, 4, 1, 2}; + printf("%d\n", chalkReplacer(c1, ARRAY_SIZE(c1), 22)); // expect: 0 + printf("%d\n", chalkReplacer(c2, ARRAY_SIZE(c2), 25)); // expect: 1 +} |