aboutsummaryrefslogtreecommitdiff
path: root/find_student_replace_chalk.c
blob: da7bcd580156fbd3cc6a729ab9854a412f198c2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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
}