Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <climits>
  3.  
  4. using namespace std;
  5.  
  6. int wejscie_danych_z_pliku()
  7. {
  8.     int wejscie = 0;
  9.     cin >> wejscie;
  10.     return wejscie;
  11. }
  12.  
  13. //Nie wiem czy mog³em skorzystaæ z gotowej metody na wartoœæ bezwzglêdn¹ (abs),
  14. //dlatego liczby ujemne zamieniam na dodatnie, gdy¿ droga nie mo¿e byæ < 0:
  15.  
  16. int wart_bezwzgledna(int liczba)
  17. {
  18.     if (liczba < 0)
  19.         return liczba * -1;
  20.     return liczba;
  21. }
  22.  
  23. int oblicz_najkrotsza_droge(int ilosc_przyjaciol, int *x, int *y)
  24. {
  25.     int najkrotsza_droga = INT_MAX;
  26.  
  27.     for (int a = 0; a < ilosc_przyjaciol; a++)
  28.     {
  29.         int droga = 0;
  30.         for (int b = 0; b < ilosc_przyjaciol; b++)
  31.         {
  32.             if(a != b)
  33.                 droga = droga + wart_bezwzgledna(x[a] - x[b]) + wart_bezwzgledna(y[a] - y[b]);
  34.  
  35.             if(droga > najkrotsza_droga) break;
  36.         }
  37.         if(droga < najkrotsza_droga)
  38.             najkrotsza_droga = droga;
  39.     }
  40.     return najkrotsza_droga;
  41. }
  42.  
  43. void problemA()
  44. {
  45.     int ilosc_przyjaciol = wejscie_danych_z_pliku();
  46.  
  47.     int* x = new int[ilosc_przyjaciol];
  48.     int* y = new int[ilosc_przyjaciol];
  49.  
  50.     for (int i = 0; i < ilosc_przyjaciol; i++)
  51.     {
  52.             x[i] = wejscie_danych_z_pliku();
  53.             y[i] = wejscie_danych_z_pliku();
  54.     }
  55.  
  56.     cout << oblicz_najkrotsza_droge(ilosc_przyjaciol, x, y);
  57. }
  58.  
  59. int main()
  60. {
  61.     int ilosc_testow = wejscie_danych_z_pliku();
  62.  
  63.     for (int i = 0; i < ilosc_testow; i++)
  64.     {
  65.         problemA();
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement