Advertisement
myloyo

14.1.15

Nov 3rd, 2023 (edited)
661
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.78 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using System.Collections.Specialized;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Globalization;
  9. using System.Security.Cryptography;
  10.  
  11. namespace myloyorrr
  12. {
  13.     class Program
  14.     {
  15.         struct SPoint : IComparable<SPoint>
  16.         {
  17.             public int x, y;
  18.             public SPoint(int x, int y)
  19.             {
  20.                 this.x = x; this.y = y;
  21.             }
  22.             public double Distance()
  23.             {
  24.                 return Math.Sqrt(x * x + y * y);
  25.             }
  26.             public double DistanceTo(SPoint obj)
  27.             {
  28.                 return Math.Sqrt((obj.x - x) * (obj.x - x) + (obj.y - y) * (obj.y - y));
  29.             }
  30.             public int CompareTo(SPoint obj)            //проводим переопределением метода
  31.             {
  32.                 // CompareTo(T) так, чтобы сравнение элементов
  33.                 if (this.Distance() == obj.Distance())  // типа SPoint проводилось по возрастанию
  34.                 {                                       //расстоянию от точки до начала координат
  35.                     return 0;
  36.                 }
  37.                 else
  38.                 {
  39.                     if (this.Distance() > obj.Distance())
  40.                     {
  41.                         return 1;
  42.                     }
  43.                     else
  44.                     {
  45.                         return -1;
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.  
  51.         static SPoint[] Input(int n, StreamReader sr) //читаем данные из файла
  52.         {
  53.             SPoint[] ar = new SPoint[n];
  54.             for (int i = 0; i < n; i++)
  55.             {
  56.                 string[] text = sr.ReadLine().Split(' ');
  57.                 ar[i] = new SPoint(int.Parse(text[0]), int.Parse(text[1]));
  58.             }
  59.             return ar;
  60.            
  61.         }
  62.         static void Print(SPoint[] array, StreamWriter sw) //выводим данные на экран
  63.         {
  64.             foreach (SPoint item in array)
  65.             {
  66.  
  67.                 {
  68.                     sw.WriteLine("({0}, {1})", item.x, item.y);
  69.                 }
  70.             }
  71.         }
  72.  
  73.         static void Main()
  74.         {
  75.             using (StreamReader sr = new StreamReader("C:/Настя/in.txt"))
  76.             {
  77.                 using (StreamWriter sw = new StreamWriter("C:/Настя/out.txt"))
  78.                 {
  79.                     int n = int.Parse(sr.ReadLine());
  80.                     SPoint[] array = Input(n, sr);
  81.                     double[] dist = new double[n];
  82.                     double mr = 100000000;
  83.                     for (int i = 0; i < n; i++)
  84.                     {
  85.                         double sum = 0;
  86.                         for (int j = 0; j < n; j++)
  87.                         {
  88.                             if (j != i)
  89.                             {
  90.                                 sum += array[i].DistanceTo(array[j]);
  91.                             }
  92.                         }
  93.                         dist[i] = sum;
  94.                         mr = Math.Min(mr, dist[i]);
  95.                         sum = 0;
  96.                     }
  97.  
  98.                     for (int i = 0; i < n; i++)
  99.                     {
  100.                         sw.WriteLine(dist[i]);
  101.                     }
  102.  
  103.                     for (int i = 0; i < n; i++)
  104.                     {
  105.                         if (dist[i] == mr)
  106.                         {
  107.                             sw.WriteLine("({0}, {1})", array[i].x, array[i].y);
  108.                         }
  109.                     }
  110.                 }
  111.             }
  112.         }
  113.     }
  114. }
  115. 6
  116. 1 2
  117. 15 10
  118. 25 26
  119. 3 8
  120. 4 4
  121. 6 9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement