summaryrefslogtreecommitdiff
path: root/11926/multi.c
blob: 5802d0907e0194ae68b8987c2260ce69d7b091f4 (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
#include <stdio.h>
#include <stdlib.h>
#define mil 1000000

int main(){
    int n, m;
    scanf("%d %d", &n, &m);
    while(n>0 || m>0){
	int i, j, start, end, mult, s, s2, conflict=0, interval;
	unsigned int *bitset;
	bitset = (int*) calloc(mil, sizeof(unsigned int));
	
	for(i=0; i<n && !conflict; i++){
	    scanf("%d %d", &start, &end);
	    if(end-start == 1){
		if(bitset[start] == 1 && bitset[end] == 1)
		    conflict=1;
	    }
	    for(s=start; s<=end && !conflict; s++){
		if(s > start && bitset[s] == 1 && s < end)
		    conflict=1;
		bitset[s]|=1;
	    }
	}
	for(i=0; i<m && !conflict; i++){
	    scanf("%d %d %d", &start, &end, &mult);
	    interval=start-end;
	    for(s=start; s<mil && !conflict; s+=mult){
		for(s2=s; s2<=s+interval; s2++){
		    if(s2>s && s2<(s+interval) && bitset[s2] == 1){
			conflict=1;
			break;
		    }
		    bitset[s2]|=1;
		}
	    }
	}
	if(conflict==1)
	    printf("CONFLICT\n");
	else
	    printf("NO CONFLICT\n");
	free(bitset);
	
	scanf("%d %d", &n, &m);
    }
}