//
#include<stdio.h>
typedef struct{
int run;
int value;
}node;
void winnertree(node run[8][20]);
int main(void)
{
node run[8][20];
int i,j,k=0,count=0;
i=0; j=0;
for(i=0;i<8;i++)
{
for(j=0;j<20;j++)
run[i][j].value=1000;
}
j=0;
do{
for(i=0;i<8;i++,count++)
{
if(count==101)
break;
run[i][j].run=i;
run[i][j].value=count;
}
j++;
for(i=7;i>=0;i--,count++)
{
if(count==101)
break;
run[i][j].run=i;
run[i][j].value=count;
}
j++;
}while(count!=101);
for(i=0;i<8;i++)
{
printf("run[%d]",i);
for(j=0;run[i][j].value!=1000;j++)
{
printf("%d ",run[i][j].value);
}
printf("\n");
}
winnertree(run);
return 0;
}
void winnertree(node run[8][20])
{
int result[110];
node arra[16];
int runcount[8];
int i,j,count=0;
for(i=0;i<110;i++)
result[i]=-1;
for(i=8;i<16;i++)
{
arra[i].value=run[i-8][0].value;
arra[i].run=run[i-8][0].run;
runcount[i-8]=1;
}
for(;;)
{
for(i=8;i<=14;i=i+2)
{
if(arra[i].value<arra[i+1].value)
{
arra[i/2].value=arra[i].value;
arra[i/2].run=arra[i].run;
}
else{ arra[i/2].value=arra[i+1].value;
arra[i/2].run=arra[i+1].run;
}
}
for(i=4;i<=6;i=i+2)
{
if(arra[i].value<arra[i+1].value)
{
arra[i/2].value=arra[i].value;
arra[i/2].run=arra[i].run;
}
else{ arra[i/2].value=arra[i+1].value;
arra[i/2].run=arra[i+1].run;
}
}
i=2;
if(arra[i].value<arra[i+1].value)
{
arra[i/2].value=arra[i].value;
arra[i/2].run=arra[i].run;
}
else{ arra[i/2].value=arra[i+1].value;
arra[i/2].run=arra[i+1].run;
}
result[count]=arra[1].value;
j=arra[1].run;
arra[j+8].value=run[j][runcount[j]].value;
runcount[j]++;
if(arra[8].value==1000&&arra[9].value==1000&&arra[10].value==1000&&arra[11].value==1000
&&arra[12].value==1000&&arra[13].value==1000&&arra[14].value==1000&&arra[15].value==1000)
break;
count++;
}
printf("result : ");
for(i=0;result[i]!=-1;i++)
printf("%d ",result[i]);
printf("\n");
}
'IT' 카테고리의 다른 글
파일 복사하기 (0) | 2014.05.14 |
---|---|
heap? (0) | 2014.05.14 |
dfs (0) | 2014.05.14 |
그래프 전은 자료구조 아니죠 ㅎㅎ (0) | 2014.05.14 |
자료구조는 그래프 부터 (0) | 2014.05.14 |