50066. Hotel Manager
難度:4.7/51
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
36#include <stdlib.h>
#include "reservation.h"
int check_insert(RoomStatus *room, int np, int s, int e){
Reservation *prev = NULL;
Reservation *now = room->reservation;
for(; now != NULL; prev = now, now = now->next){
if(e <= now->StartTime) break;
if(s < now->EndTime) return 0;
}
Reservation* new_res = (Reservation*) malloc(sizeof(Reservation));
new_res->nP = np;
new_res->StartTime = s;
new_res->EndTime = e;
if(prev == NULL){
new_res->next = room->reservation;
room->reservation = new_res;
}
else{
prev->next = new_res;
new_res->next = now;
}
return 1;
}
int ReserveRoom(RoomStatus list[], int n, int nP, int StartTime, int EndTime){
for(int i = 0; i < n; i++){
if(list[i].capacity < nP) continue;
if(check_insert(&list[i], nP, StartTime, EndTime) == 1){
return 1;
}
}
return 0;
}