-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCinema Seat Allocation
37 lines (34 loc) · 996 Bytes
/
Cinema Seat Allocation
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
class Solution {
public int maxNumberOfFamilies(int n, int[][] reservedSeats) {
int count = 0;
Arrays.sort(reservedSeats, new Comparator<int[]>() {
public int compare(int[] a, int[] b) {
if(a[0] != b[0])return a[0] - b[0];
return a[1] - b[1];
}
});
int ret = 2*n;
for(int i = 0; i<reservedSeats.length; ){
int j = i;
while(j < reservedSeats.length && reservedSeats[j][0] == reservedSeats[i][0]){
j++;
}
ret -= 2;
int ptn = 0;
for(int k = i;k < j;k++){
ptn |= 1<<reservedSeats[k][1];
}
if((ptn&((1<<10)-(1<<2))) == 0){
ret += 2;
}else if((ptn&((1<<8)-(1<<4))) == 0){
ret++;
}else if((ptn&((1<<6)-(1<<2))) == 0){
ret++;
}else if((ptn&((1<<10)-(1<<6))) == 0){
ret++;
}
i = j;
}
return ret;
}
}