#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 = 1;
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];
answer *= list[i].add;
}
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[5][20]={0};
int i, j=0;
for(i=0;i<signals_rows;i++){
for(j=0;j<20;j++){
if(signals[i][0]>=j+1) history[i][j]=0;
else if(signals[i][0]+signals[i][1]>=j+1) history[i][j]=1;
else if(signals[i][0]+signals[i][1]+signals[i][2]>=j+1) history[i][j]=0;
else history[i][j]=-1;
}
}
int sum=0, k[5]={0}, count=0;
while(sum!=signals_rows && count<answer){
sum=0;
for(i=0;i<signals_rows;i++){
sum+=history[i][k[i]];
if(history[i][++k[i]]==-1) k[i]=0;
}
printf("%d\n", count);
count++;
}
printf("%d\n", answer);
if(count>=answer) return -1;
return count;
}
int main(){
int a[5][3]={{3,3,3},{5,4,2},{2,1,2}};
printf("\n%d",solution(a, 3, 3));
}
To embed this project on your website, copy the following code and paste it into your website's HTML: