| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 443437 | 黄浙峰老师 | 【C6-8】统计数字 I | C++ | 通过 | 100 | 51 MS | 264 KB | 1010 | 2026-06-06 10:00:37 |
#include <iostream> using namespace std; long long a[200005]; long long temp[200005]; void merge(int l, int mid, int r){ int i = l; int j = mid + 1; int k = l; while(i <= mid && j <= r){ if(a[i] < a[j]) temp[k++] = a[i++]; else temp[k++] = a[j++]; } while(i <= mid) temp[k++] = a[i++]; while(j <= r) temp[k++] = a[j++]; for(int p = l; p <= r; p++) a[p] = temp[p]; } void merge_sort(int l, int r){ if(l >= r) return; int mid = (l + r) / 2; merge_sort(l, mid); merge_sort(mid+1, r); merge(l, mid, r); } int main(){ int n; cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i]; } merge_sort(1, n); int pos = 1; while(pos <= n){ long long now = a[pos]; int cnt = 0; while(pos <= n && a[pos] == now){ cnt++; pos++; } cout << now << " " << cnt << endl; } return 0; }