提交记录 22023


用户 题目 状态 得分 用时 内存 语言 代码长度
bykem 1008. 测测你的二维数点 Accepted 100 2.437 s 156296 KB C++17 683 B
提交时间 评测时间
2024-07-29 19:53:56 2024-07-29 19:54:01
#include <algorithm>

using namespace std;

constexpr int mask(int x) { return x + (x >> 10); }
constexpr int kN = 1e7;

int h[kN], p[kN];
int f[mask(kN) + 1];

void add(int n, int x) {
  for (++x; x <= n; x += x & -x) {
    ++f[mask(x)];
  }
}
int sum(int x) {
  int s = 0;
  for (; x; x &= x - 1) {
    s += f[mask(x)];
  }
  return s;
}
void count_2d(int n, const unsigned *x, const unsigned *y, unsigned *out) {
  fill_n(h, n, -1);
  for (int i = 0; i < n; ++i) {
    p[i] = h[x[i]];
    h[x[i]] = i;
  }
  for (int i = 0; i < n; ++i) {
    for (int j = h[i]; ~j; j = p[j]) {
      out[j] = sum(y[j]);
    }
    for (int j = h[i]; ~j; j = p[j]) {
      add(n, y[j]);
    }
  }
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #12.437 s152 MB + 648 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2024-12-05 10:13:28 | Loaded in 0 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠