paranid5

Жетоны

Sep 17th, 2020
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.27 KB | None | 0 0
  1. /*
  2. H. Юбилейные жетоны
  3. Ограничение времени   1 секунда
  4. Ограничение памяти 512Mb
  5. Ввод    стандартный ввод или input.txt
  6. Вывод  стандартный вывод или output.txt
  7. К юбилею метро во втором по величине городе Байтландии выпустили специальные юбилейные жетоны нескольких видов. Руководство метрополитена приняло решение продавать сувенирные комплекты, состоящие из двух жетонов разного вида.
  8. По заданному количеству жетонов каждого вида выясните, какое максимальное количество сувенирных комплектов можно собрать.
  9.  
  10. Формат ввода
  11. Первая строка входа содержит одно целое число n ( 1≤n≤1000) — количество видов юбилейных жетонов. Каждая из последующих n строк содержит одно целое число ti (1≤ti≤109)— количество жетонов соответствующего вида.
  12.  
  13. Формат вывода
  14. Выведите одно целое число — максимально возможное количество сувенирных комплектов, которые можно собрать из имеющихся жетонов.
  15.  
  16. Пример 1
  17. Ввод    Вывод
  18. 3
  19. 1
  20. 3
  21. 2
  22.  
  23. 3
  24.  
  25.  
  26. Пример 2
  27. Ввод    Вывод
  28. 5
  29. 2
  30. 2
  31. 1
  32. 12
  33. 3
  34.  
  35. 8
  36. */
  37.  
  38. #include <stdio.h>
  39. #include <stdlib.h>
  40.  
  41. int compare(const void* a, const void* b)
  42. {
  43.     const int arg1 = *(const int*)a;
  44.     const int arg2 = *(const int*)b;
  45.    
  46.     if (arg1 < arg2) return -1;
  47.     if (arg1 > arg2) return 1;
  48.     return 0;
  49. }
  50.  
  51. int main()
  52. {
  53.     int n = 0;
  54.     scanf("%d", &n);
  55.    
  56.     int* nums = (int*)malloc(n * sizeof(int));
  57.     size_t sum = 0;
  58.    
  59.     for (int i = 0; i < n; i++)
  60.         scanf("%d", &nums[i]), sum += nums[i];
  61.    
  62.     qsort(nums, n, sizeof(int), compare);
  63.    
  64.     if (sum - nums[n - 1] <= nums[n - 1])
  65.         printf("%llu", sum - nums[n - 1]);
  66.     else
  67.         printf("%llu", sum / 2);
  68.    
  69.     free(nums);
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment