Treap 0pts 但是样例过了,求指点
查看原帖
Treap 0pts 但是样例过了,求指点
474259
CHlMERA楼主2022/8/2 20:14

主函数部分:

mian() {
  Treap T (1e5);
  int n, Min, num, sum = 0;
  char opt;
  read (n, Min);
  int TOT = 0, TOTA = 0;
  while(n--) {
    cin >> opt >> num;
    if (opt == 'I') {
      if (num - sum >= Min) {
        T.Insert (num - sum);
        TOT++;
        TOTA++;
      }
    } elif (opt == 'A') {
      Min -= num;
      sum += num;
    } elif (opt == 'S') {
      Min += num;
      sum -= num;
      int a1 = Min - 1, a2;
      while (T.GP (a1) != -INF) {
        a2 = a1;
        a1 = T.GP (a1);
        T.Remove (T.GP (a2));
        TOT--;
      }
    } elif (opt == 'F') {
      if (TOT < num) printf ("-1\n");
      else {
        printf ("%d\n", 
        T.GN (TOT - num + 2) + sum);
      }
    }
  }
  printf ("%d\n", TOTA - TOT);
}

其中 mian 是因为我在最前面 define 了,所以没问题。

然后,GNGetNumGRGetRankGPGetPreGNGetNextInsertRemove 就是插入和删除。

前面的平衡树我写进了一个 Class 里,能过板子,认为没问题。主程序是一个同学的思路,我和同学差不多写的是一样的,但是我爆零了,他满分,我很不理解。

如需,这里是全部代码

万分感谢。

2022/8/2 20:14
加载中...