提交记录 48207


用户 题目 状态 得分 用时 内存 语言 代码长度
iMMIQ 1001. 测测你的排序 Time Limit Exceeded 0 5 s 390660 KB C++17 1.14 KB
提交时间 评测时间
2026-09-16 14:25:40 2026-09-16 14:25:48
// duck.ac 1001 数据分布探针:统计 4 个字节各自的直方图 + min/max + 重复/有序比例 + top16 去重数
// 然后 std::sort 保持 AC。输出经 stdout(重定向到内存,应该会显示在提交页)。
#include <algorithm>
#include <cstdint>
#include <cstdio>
namespace {
unsigned long h[4][256];
unsigned char bm[8192];
unsigned long long dup = 0, adj = 0, pairs = 0;
unsigned mn = ~0u, mx = 0;
}  // namespace
void sort(unsigned* a, int n) {
  for (long i = 0; i < n; ++i) {
    unsigned v = a[i];
    h[0][v & 255]++;
    h[1][(v >> 8) & 255]++;
    h[2][(v >> 16) & 255]++;
    h[3][v >> 24]++;
    bm[(v >> 16) >> 3] |= 1u << ((v >> 16) & 7);
    if (v < mn) mn = v;
    if (v > mx) mx = v;
    if (i) {
      unsigned p = a[i - 1];
      if (p == v) ++dup;
      if (p <= v) ++adj;
      ++pairs;
    }
  }
  unsigned distinct16 = 0;
  for (int i = 0; i < 65536; ++i)
    if (bm[i >> 3] & (1u << (i & 7))) ++distinct16;
  printf("n=%d min=%x max=%x dup=%llu adjordered=%llu/%llu distinct_top16=%u\n",
         n, mn, mx, dup, adj, pairs, distinct16);
  for (int b = 3; b >= 0; --b) {
    printf("byte%d:", b);
    for (int k = 0; k < 256; ++k) printf(" %llx", h[b][k]);
    printf("\n");
  }
  fflush(stdout);
  std::sort(a, a + (size_t)n);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #15 s381 MB + 516 KBTime Limit ExceededScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-09-20 14:36:09 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠