⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zp1501.cpp

📁 一个acm题目系统会自动删除debug和release目录
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <math.h>
#include <iostream.h>

struct btr
{
  int nm;
  struct btr* l;
  struct btr* r;
};
struct btr* rt;
int k,m,h,w,mh,mw,a[260];

void crt(int x,struct btr* c)
{
  c->nm=a[x];
  if (x<m)
  {
    c->r=new(struct btr);
    c->l=new(struct btr);
    if (a[x]==a[x*2])
    {
      crt(x*2,c->l);
      crt(x*2+1,c->r);
    }
    else
    {
      crt(x*2+1,c->l);
      crt(x*2,c->r);
    }
  }
  else
  {
    c->l=NULL;
    c->r=NULL;
  }
}
void fdh(struct btr* c)
{
  if (c->nm==k)
  {
    mh=h;
    mw=w;
    return;
  }
  else
  {
    w++;
    h++;
    if (c->r)
      fdh(c->r);
    h--;
    if (c->l)
      fdh(c->l);
    w--;
  }
}

int main(int argc, char* argv[])
{
  int cs,n,i,N,I;
  cs=0;
  cin>>n;
  while (n)
  {
    if (cs)   cout<<endl;
    else      cs=1;

    m=pow(2,n);
    for (i=m-1;i>=1;i--)
      cin>>a[i];
    for (i=m;i<m*2;i++)
      a[i]=m*2-i;

    rt=new(struct btr);
    rt->r=NULL;
    rt->l=NULL;

    crt(1,rt);

    cin>>N;
    for (I=0;I<N;I++)
    {
      cin>>k;
      cout<<"Player "<<k<<" can be ranked as high as ";
      h=1; w=0;
      fdh(rt);
      w=n-mw;
      w=pow(2,w);
      w=m-w+1;

      cout<<mh<<" or as low as "<<w;
      cout<<"."<<endl;
    }
    cin>>n;
  }
  return 0;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -