fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int k1, k2, m, n;
  6. int x = 0, y = 0, M = 10001;
  7. //x-мальчики, y-девочки, M- минимальное из вариантов количества учеников (10001 сначала, чтобы первый раз прошло условие внутри цикла)
  8. cin >> k1 >> k2 >> n >> m;
  9.  
  10. for(int i = 0; i <= k2; i++){
  11. for(int j = k1-i; j <= k2; j++){ //j=k1-i, так как сумма i+j должна быть хотя бы k1. Рассматривать варианты меньше, смысла не имеет
  12. /* M>i+j— если сумма меньше предыдущего из меньших, то перезаписываем переменные, если больше- пропускаем. i*j== количество дружащих пар.
  13.  k1<=i+j — общее число учеников должно быть больше или равно k1 и меньше, либо равно k2 (i+j<=k2). Количество мальчиков в классе должно
  14.  быть больше либо равно количеству, которое требуется девочкам для дружбы (i>=m), аналогично с девочками (i>=n)*/
  15. if(M > i + j && i * n == j * m && k1 <= i + j && i + j <= k2 && i>=m && j>=n){
  16. x = i;
  17. y = j;
  18. M = i+j;
  19. }
  20. }
  21. }
  22. cout<< x + y << " " << x << " " << y << endl;
  23. return 0;
  24. }
Success #stdin #stdout 0s 15232KB
stdin
20 30 4 5
stdout
27 15 12