FACUP - The FA cup
Tác giả: hieult
Ngôn ngữ: C++
#include <stdio.h>
//#include <conio.h>
int main()
{
// freopen("FACUP.in","r",stdin);
int n,mu2[10],a[257][257],flag[257][257],so[257];
double kq[257][10];
scanf("%d",&n);
mu2[0]=1; for(int i = 1;i<=n;i++) mu2[i] = mu2[i-1]*2;
for(int i = 1;i<=mu2[n];i++)
{
so[i] = i;
for(int j = 1;j<=mu2[n];j++)
{
scanf("%d",&a[i][j]);
if(i==j) flag[i][j]=1;
else flag[i][j]=0;
}
}
for(int i = 1;i<=mu2[n];i++)
kq[i][0]=1;
for(int ii = 1;ii<=n;ii++)
{
for(int i = 1;i<=mu2[n];i++)
{
kq[i][ii]=0;
int k = (i-1)/mu2[ii];
for(int j = k*mu2[ii]+1;j<=k*mu2[ii]+mu2[ii];j++)
{
if(flag[i][j]==0)
kq[i][ii]=kq[i][ii]+kq[i][ii-1]*kq[j][ii-1]*a[i][j]/100;
flag[i][j]=1;
}
// printf("%d %d %lf\n",i,ii,kq[i][ii]);
}
}
int check = 0;
while(check==0)
{
check = 1;
for(int i = 1;i<=mu2[n]-1;i++)
{
if(kq[i][n]<kq[i+1][n])
{
double temp = kq[i][n];
kq[i][n] = kq[i+1][n];
kq[i+1][n] = temp;
int temp1 = so[i];
so[i] = so[i+1];
so[i+1] = temp1;
check = 0;
}
}
}
for(int i = 1;i<=mu2[n];i++)
printf("%d\n",so[i]);
// getch();
}