L2-012. 关于堆的判断*

L2-012. 关于堆的判断

参考博客

  1 #include<iostream>
  2 #include<cstdio>
  3 #include<cstring>
  4 #include<cmath>
  5 #include<map>
  6 
  7 using namespace std;
  8 
  9 int n, a[1005];
 10 
 11 //建树的 “模板”
 12 void up( int son )
 13 {
 14     int t = a[son];
 15     int tson = son;
 16     while( (tson > 1)&&( a[tson/2] > t))
 17     {
 18         a[tson] = a[tson/2];
 19         tson = tson/2;
 20     }
 21     a[tson] = t;
 22 }
 23 
 24 void charu( int  t)
 25 {
 26     a[ ++n ] = t;
 27     up( n );
 28 }
 29 
 30 
 31 int main ()
 32 {
 33     int k, m, x, y;;
 34     map <int, int> index; //记录下标
 35     string s;
 36     cin >> k >> m;
 37     n=0;
 38     //建树
 39     for(int i=0; i<k; i++)
 40     {
 41         cin >> x;
 42         charu(x);
 43     }
 44     //给map赋值
 45     for(int i=1; i<=n; i++)
 46     {
 47         index[a[i]] = i;
 48     }
 49     for(int i=0; i<m; i++)
 50     {
 51         cin >> x;
 52         cin >> s;
 53         int index_x = index[x]; 
 54         int index_y;
 55         if(s[0] == 'a')
 56         {
 57             cin >> y;
 58             getline(cin, s);  //这个函数可以输入一个带空格的字符串
 59             index_y = index[y];
 60             if(index_x/2 == index_y/2)
 61                 puts("T");
 62             else
 63                 puts("F");
 64         }
 65         else
 66         {
 67             cin >> s;
 68             cin >> s;
 69             if(s[0] == 'r')
 70             {
 71                 if(index_x == 1)
 72                     puts("T");
 73                 else
 74                     puts("F");
 75             }
 76             else if(s[0] == 'p')
 77             {
 78                 cin >> s;
 79                 cin >> y;
 80                 index_y = index[y];
 81                 if(index_y/2 == index_x)
 82                     puts("T");
 83                 else
 84                     puts("F");
 85 
 86             }
 87             else
 88             {
 89                 cin >> s;
 90                 cin >> y;
 91                 index_y = index[y];
 92                 if(index_x/2 == index_y)
 93                     puts("T");
 94                 else
 95                     puts("F");
 96             }
 97         }
 98     }
 99 
100     return 0;
101 }
原文地址:https://www.cnblogs.com/Annetree/p/8678568.html