summaryrefslogtreecommitdiff
path: root/11926/multi.c
diff options
context:
space:
mode:
Diffstat (limited to '11926/multi.c')
-rw-r--r--11926/multi.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/11926/multi.c b/11926/multi.c
new file mode 100644
index 0000000..5802d09
--- /dev/null
+++ b/11926/multi.c
@@ -0,0 +1,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);
+ }
+}