typedef struct {
    int big;
    int medium;
    int small;
} ParkingSystem;


ParkingSystem* parkingSystemCreate(int big, int medium, int small) {
    ParkingSystem* obj = (ParkingSystem*)malloc(sizeof(ParkingSystem));
    obj->big = big;
    obj->medium = medium;
    obj->small = small;
    return obj;
}

bool parkingSystemAddCar(ParkingSystem* obj, int carType) {
  switch(carType){
      case 1:
        if(obj->big > 0){
          obj->big--;
          return true;
        }
        else return false;

      case 2:
        if(obj->medium > 0){
          obj->medium--;
          return true;
        }
        else return false;

      case 3:
        if(obj->small > 0){
          obj->small--;
          return true;
        }
        else return false;
  }
  return false;
}

void parkingSystemFree(ParkingSystem* obj) {
    free(obj);
}

/**
 * Your ParkingSystem struct will be instantiated and called as such:
 * ParkingSystem* obj = parkingSystemCreate(big, medium, small);
 * bool param_1 = parkingSystemAddCar(obj, carType);
 
 * parkingSystemFree(obj);
*/

這題題目蠻複雜,但是概念不難