首页 > 试题广场 >

六一儿童节

[编程题]六一儿童节
  • 热度指数:36186 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。

输入描述:
第一行:n,表示h数组元素个数
第二行:n个h数组元素
第三行:m,表示w数组元素个数
第四行:m个w数组元素


输出描述:
上台表演学生人数
示例1

输入

3 
2 2 3
2
3 1 

输出

1
#include <stdio.h>
#include <stdlib.h>

int compar(const void* a, const void* b) {
  return *(int*) a - *(int*) b;
}

int main(const int argc, const char** const argv) {
  int i, j, n, m, ans = 0;
  
  fscanf(stdin, "%d", &n);
  int h[n];
  for (i = 0; i < n; ++i)
    fscanf(stdin, "%d", h + i);
  
  fscanf(stdin, "%d", &m);
  int w[m];
  for (i = 0; i < m; ++i)
    fscanf(stdin, "%d", w + i);
  
  qsort(w, m, sizeof(int), compar);
  qsort(h, n, sizeof(int), compar);
  
  i = 0, j = 0;
  while (i < m && j < n) {
    if (w[i] >= h[j]) ++ans, ++j;
    ++i;
  }
  
  return fprintf(stdout, "%d", ans), 0;
}

发表于 2021-07-19 11:33:27 回复(0)