Advertisement
Mlack

EchmochPak

Nov 19th, 2012
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int N, D; // 1- количество хачопаков, 2 - размер прохода
  9. cin>>N>>D;
  10. int p,S; //полупериметр и площадь
  11. int x = 0;
  12. int H; //высота
  13. int mas[3*N]; //основной массив для хранения сторон треугольников
  14. int ind = 0; //индекс второго массива, где хранятся высоты что удовлетворяют условию
  15. int res = 0; // индекс того элемента где высота наибольшая!!!
  16. int visota = 0; // высота с которой сравниваются остальные
  17. int arr[N]; // массив для хранения высот
  18.  
  19. for (int i = 0; i < N ; i++)
  20. arr[i]=0; // весь массив в нулях; массив для хранения высот
  21.  
  22. for (int q = 0; q < 3*N; q++)
  23. cin>>mas[q]; //вводим значения с клавиатуры
  24.  
  25. for (int i = 0; i < 3*N ; )
  26. {
  27. p = (mas[i] + mas[i+1] + mas[i+2])/2; //полупериметр
  28. S = sqrt(p * (p-mas[i]) * (p-mas[i+1]) * (p-mas[i+2]) ); //площадь
  29. if ( mas[i] > mas[i+1] ) { x = mas[i]; }
  30. if ( mas[i+2] > x ) { x = mas[i+2]; }
  31. H = (S*2) / x; // нашли высоту
  32. arr[ind] = H; // записали высоты в массив
  33. ind++; // увеличили индекс этого массива на 1
  34. i+=3; // увелили "і" на 3 т.к. нам нужно взять след. три стороны из массива значений
  35. }
  36.  
  37.  
  38. for (int i = 0; i < N ; i++) {
  39. if (arr[i] <= D && arr[i] >= visota) {visota = mas[i]; res = i+1; }
  40. // 2 условия для выбора наибольшего хачепака
  41. else {continue;}
  42. }
  43. cout<<res<<endl;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement