Advertisement
makshev1

Untitled

Apr 20th, 2021
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. /* 2025. СТЕНКА НА СТЕНКУ
  2.  
  3. АЛГОРИТМ: изначально происходит считывание количества тестов. После в цикле на каждой итерации происходит считывание
  4. общего количества людей и количества групп. Дальше высчитывается размер обыкновенной группы и количество расширенных групп.
  5. Дальше на каждой итерации происходит подсчет максимального количества схваток. Основные составляющие количества:
  6.  
  7. fullGroupSize * remainder - количество людей в расширенных группах
  8. (n - fullGroupSize*remainder) - количество людей в обыкновенных группах
  9. (n - groupSize) - количество противников для людей в одной обыкновенной группе
  10. (n - groupSize - 1) - количество противников для людей в одной расширенной группе
  11.  
  12. В итоге сначала происходит подсчет количества схваток между людьми из обыкновенной группы и людьми из расширенной,
  13. деление пополам происходит, потому что сначала произошел подсчет боев для людей из обыкновенной группы с людьми из расширенной,
  14. а потом наоборот. Деление пополам необходимо из-за того, что в сумме каждая схватка учитывается дважды.
  15.  
  16. ОЦЕНКА ВРЕМЕНИ РАБОТЫ: на каждой итерации происходит константное количество операций, в итоге время работы алгоритма
  17. T(n) = O(n), где n - количество тестов.
  18.  
  19. */
  20.  
  21.  
  22. #include <iostream>
  23.  
  24. using namespace std;
  25.  
  26. int main()
  27. {
  28. int testCount;
  29. cin >> testCount;
  30.  
  31. for (int i = 0; i < testCount; ++i) {
  32. int n, k;
  33. cin >> n >> k;
  34.  
  35. int groupSize = n / k; // размер обыкновенной группы
  36. int remainder = n % k; // остаток - количество увеличенных групп
  37. int fullGroupSize = groupSize + 1;// размер увеличенной группы
  38.  
  39. int answer = ((n - fullGroupSize * remainder)*(n - groupSize) + (remainder * fullGroupSize)*(n - groupSize - 1)) / 2;
  40.  
  41. cout << answer << endl;
  42. }
  43.  
  44. return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement