多题目

CSPJ2019 完善程序 

程序二 

#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 10000000;
const int maxs = 10000;
int n;
unsigned a[maxn], b[maxn], res[maxn], ord[maxn];
unsigned cnt[maxs + 1];

int main() {
	scanf("%d",&n);
	for (int i = 0; i < n; ++i)
		scanf("%d%d", &a[i], &b[i]);
	memset(cnt,0,sizeof(cnt));
	for (int i = 0; i < n; ++i)
		①  ; //利用cnt数组统计数量
	for (int i = 0; i < maxs; ++i)
		cnt[i + 1] += cnt[i];
	for (int i = 0; i < n; ++i)
		② ; //记录初步排序结果
	memset(cnt, 0 , sizeof(cnt));
	for (int i = 0; i < n; ++i)
		③ ; //利用cnt数组统计数量
	for (int i = 0; i < maxs; ++i)
		cnt[i + 1] += cnt[i];
	for (int i = n - 1; i >= 0; --i)
		④ ; //记录最终排序结果
	for (int i = 0; i < n; ++i)
		printf("%d %d\n", ⑤);
		return 0;
}

第1题 单选

①处应填(   )

A.

++cnt[i]

B.

++cnt[b[i]]

C.

++cnt[a[i] * maxs + b[i]]

D.

++cnt[a[i]]

第2题 单选

②处应填(   )

A.

ord[--cnt[a[i]]] = i

B.

ord[--cnt[b[i]]] = a[i]

C.

ord[--cnt[a[i]]] = b[i]

D.

ord[--cnt[b[i]]] = i

第3题 单选

③处应填()

A.

++cnt[b[i]]

B.

++cnt[a[i] * maxs + b[i]]

C.

++cnt[a[i]]

D.

++cnt[i]

第4题 单选

④处应填()

A.

res[--cnt[a[ord[i]]]] = ord[i]

B.

res[--cnt[b[ord[i]]]] = ord[i]

C.

res[--cnt[b[i]]] = ord[i]

D.

res[--cnt[a[i]]] = ord[i]

第5题 单选

⑤处应填()

A.

a[i], b[i]

B.

a[res[i]], b[res[i]]

C.

a[ord[res[i]]] , b[ord[res[i]]]

D.

a[res[ord[i]]] , b[res[ord[i]]]

发表评论

登录 后再回复