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();
}
                 

Download