#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
struct com{
int start;
int data;
int add;
};
typedef struct com com;
int ch(com* list1, com* list2){
if((*list1).start<(*list2).start+(*list2).data && (*list1).start+(*list1).data>(*list2).start) return 1;
return 0;
}
// signals_rows는 2차원 배열 signals의 행 길이, signals_cols는 2차원 배열 signals의 열 길이입니다.
int solution(int signals[5][3], size_t signals_rows, size_t signals_cols) {
int answer = 0;
com list[5];
for(int i=0;i<signals_rows;i++){
list[i].start=signals[i][0];
list[i].add=signals[i][0]+signals[i][1]+signals[i][2];
list[i].data=signals[i][1];
}
for(int i=0;i<signals_rows;i++){
for(int j=0;j<signals_rows;j++){
if(!ch(&list[i],&list[j]) && list[i].add==list[j].add) return -1;
}
}
int history[10000]={0};
for(int i=0;i<signals_rows;i++){
for(int j=1;j<list[i].data+1;j++){
history[list[i].start+j]++;
if(history[list[i].start+j]==2) return list[i].start+j;
}
}
for(int k=1;k<100;k++){
for(int i=0;i<signals_rows;i++){
for(int j=1;j<list[i].data+1;j++){
history[k*list[i].add+j+list[i].start]++;
if(history[k*list[i].add+j+list[i].start]==2) return k*list[i].add+j+list[i].start;
}
}
}
for(int i=0;i<100; i++){
printf("\n%d\t%d", i,history[i]);
}
return answer;
}
int main(){
int a[5][3]={{2,1,2},{5,1,1}};
printf("\n\t%d",solution(a, 2, 3));
}
To embed this project on your website, copy the following code and paste it into your website's HTML: