1239:统计数字
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b8b6b5eeba1db70f52144f2b25ea9ed4.png)
- 这个题其实可以直接使用map来进行计数,但是题目不允许我们使用stl所以这题我们只能老老实实写。
- 考虑输入n<=200000 时间复杂度应该控制在nlogn以内,我们可以考虑使用归并排序来进行写,~~ 使用快排可能会超时我没有用可以试一试 ~~
gb模板look 代码
#include <iostream>
using namespace std;
int n, ma, t, k, m;
const int N = 1000005;
typedef long long ll;
int a[N];
int c[N];
int cnt = 0;
void gb_sort(int l, int r) {
if (l >= r)
return;
int mid = l + r >> 1;
gb_sort(l, mid), gb_sort(mid + 1, r);
int i = l, j = mid + 1, cnt = 0;
while (i <= mid && j <= r) {
if (a[i] > a[j]) {
c[cnt++] = a[j++];
} else
c[cnt++] = a[i++];
}
while (i <= mid)c[cnt++] = a[i++];
while (j <= r)c[cnt++] = a[j++];
for (int i = l, j = 0; i <= r; i++) {
a[i] = c[j++];
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++)scanf("%d", &a[i]);
gb_sort(1, n);
cnt = 1;
int j;
for (int i = 1; i <= n; i++) {
cnt = 0;
for (j = i; j <= n; j++) {
if (a[i] == a[j])
cnt++;
else
break;
}
printf("%d %d\n", a[i], cnt);
i = j - 1;
}
}