martarubtsova

Untitled

Jan 21st, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. #include <vector>
  2. #include <algorithm>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. #define forn(j, n) for (int j = 0; j < n; j++)
  8.  
  9. int main()
  10. {
  11. int n, k, x, count, q, w = 0;
  12. double min = 101, max = -1;
  13. cin >> n >> k;
  14. vector < int > a;
  15. vector < int > b;
  16. forn(i, n)
  17. {
  18. cin >> x;
  19. a.push_back(x);//не изменяю больше этот вектор
  20. b.push_back(x);//вектор, в котором позже использованные теоремы заменяю на -1
  21. }
  22. count = n / k; //кол-во теор в билете
  23. cin >> q;
  24. double av; //среднее арифметическое
  25. forn(i, q)
  26. {
  27. double sum = 0;
  28. forn(j, count)
  29. {
  30. cin >> x;
  31. sum += a[x - 1];
  32. if (b[x - 1] != -1)
  33. {
  34. b[x - 1] = -1;
  35. w++; //кол-во теорем, которые были использованы и не могут попасться в др билете
  36. }
  37. }
  38. av = sum / count;
  39. if (av > max)
  40. max = av;
  41. if (av < min)
  42. min = av;
  43. }
  44. sort(b.begin(), b.end());
  45. int t = 0;
  46. double sum = 0;
  47. int ost = n - w; //кол-во теор, которых не было в использованных билетах
  48. if (ost >= count) //если это кол-во < кол-ва теор в 1 билете => нет смысла их считать
  49. {
  50. forn(i, n) //
  51. if (b[i] != -1 && t < count) //цикл сначала, но после всех -1
  52. {
  53. t++;
  54. sum += b[i];
  55. }
  56. av = sum / count;
  57. t = 0;
  58. sum = 0;
  59. if (av > max)
  60. max = av;
  61. if (av < min)
  62. min = av;
  63. for (int i = n - 1; i >= 0; i--) //цикл с конца
  64. if (t < count)
  65. {
  66. t++;
  67. sum += b[i];
  68. }
  69. av = sum / count;
  70. t = 0;
  71. if (av > max)
  72. max = av;
  73. if (av < min)
  74. min = av;
  75. }
  76. printf("%.6f", min);
  77. cout << ' ';
  78. printf("%.6f", max);
  79. }
Advertisement
Add Comment
Please, Sign In to add comment