-
Notifications
You must be signed in to change notification settings - Fork 0
/
lifeguards.cpp
64 lines (54 loc) · 1.54 KB
/
lifeguards.cpp
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//Lifeguards
//By: Max Yang
//Time: 1 hour and 45 minutes
/*
Figuring out the logic part took a lot of time with the different array,
and I'm not sure if I got it completely right. After testing out the code,
the answer was off a little for the test cases. I checked with the rest of
the code, but I wasn't where the errors were.
*/
#include <cstdio>
#include <cstdlib>
int main(){
FILE * In = fopen("lifeguards.in", "r");
int N;
fscanf(In, "%d", &N);
int A[N+1], B[N+1];
for(int i = 0; i<N; i++){
fscanf(In, "%d %d", &A[i], &B[i]);
}
int total_hours = 0;
fclose(In);
for(int j = 0; j<N; j++){
total_hours += (B[j]-A[j]);
}
printf("%d", total_hours);
int time_covered[1001];
for(int k = 0; k<N; k++){
//inputs times covered
for(int m = A[k]; m < B[k]; m++){
time_covered[m]++;
}
}
int time_total_lapse=0;
int max_total_lapse=0;
for(int d=0; d<N; d++){
for(int m = A[d]; m < B[d]; m++){
time_covered[m]--;
if(time_covered[m] > 0){
//check if lapses more than 1
time_total_lapse++;
}
time_covered[m]++; //reset
}
if(time_total_lapse>max_total_lapse){
max_total_lapse = time_total_lapse;
}
time_total_lapse = 0; //reset lapsed time for this array
}
total_hours -= max_total_lapse;
printf("%d\n", total_hours);
FILE*Out = fopen("lifeguards.out", "w");
fprintf(Out, "%d", total_hours);
fclose(Out);
}