summaryrefslogtreecommitdiff
path: root/12356/buddies.c
blob: e93fc98881b77b9dfa2853aa80cccdab2d7e48ce (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
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
#include <stdio.h>

int main(){
    int s, r;
    scanf("%d %d", &s, &r);
    while(s>0){

	int left, right, i;
	int gapsl[100000], gapsr[100000], gap_index=0;	
	
	while(r--){
	    int left_seek, right_seek, curr_gapindex;
	    
	    scanf("%d %d", &left, &right);

	    left--; right--; /* adjust for 0 index */
	    
	    curr_gapindex = gap_index++;	    
	    gapsl[curr_gapindex]=left;
	    gapsr[curr_gapindex]=right;

	    left_seek=left-1;
	    right_seek=right+1;
	    
	    int gap_collision=0;
	    for(i=0; i<=curr_gapindex; i++){
		while(gapsl[i]<=left_seek && gapsr[i]>=left_seek){
		    left_seek--;
		    gap_collision=1;
		}
		if(gap_collision){  
		    i=-1;
		    gap_collision=0;
		}
	    }
	    if(left_seek<0)
		printf("* ");
	    else
		printf("%d ", left_seek+1);

	    gap_collision=0;
	    for(i=0; i<=curr_gapindex; i++){
		while(gapsr[i]>=right_seek && gapsl[i]<=right_seek){
		    right_seek++;
		    gap_collision=1;
		}
		if(gap_collision){
		    i=-1;
		    gap_collision=0;
		}
	    }
	    if(right_seek>=s)
		printf("*\n");
	    else
		printf("%d\n", right_seek+1);
	}
	
	printf("-\n");
	scanf("%d %d", &s, &r);
    }
    return 0;
}