Advertisement
evgenko

Hall_Roundtables

Sep 24th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <math.h>
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7. void sortir(int arr[],int size)
  8. {
  9.     for (int i=0;i<size;i++)
  10.         for (int j=i;j<size;j++)
  11.         {
  12.             if ((arr[i*2+1])>(arr[j*2+1]))
  13.             {
  14.                 int a=arr[i*2+1];
  15.                 arr[i*2+1]=arr[j*2+1];
  16.                 arr[j*2+1]=a;
  17.                 a=arr[i*2];
  18.                 arr[i*2]=arr[j*2];
  19.                 arr[j*2]=a;
  20.             }
  21.             if ((arr[i*2+1])==(arr[j*2+1]))
  22.             {
  23.                 if ((arr[i*2])>(arr[j*2]))
  24.                 {
  25.                 int a=arr[i*2+1];
  26.                 arr[i*2+1]=arr[j*2+1];
  27.                 arr[j*2+1]=a;
  28.                 a=arr[i*2];
  29.                 arr[i*2]=arr[j*2];
  30.                 arr[j*2]=a;
  31.                 }
  32.             }
  33.         }
  34. }
  35. double distance(int x,int x2,int radius)
  36. {
  37.     return (sqrt((pow(x2-x,2)))-radius);
  38. }
  39.  
  40. int main()
  41. {
  42.     ifstream input;
  43.     input.open("TABLE.DAT",ios::in);
  44.     int leftX,rightX,radius,columns;
  45.     input>>leftX;
  46.     input>>rightX;
  47.     input>>radius;
  48.     input>>columns;
  49.     int arrayCor[columns*2];
  50.     for (int i=0;i<columns;i++)
  51.     {
  52.         input>>arrayCor[i*2];
  53.         input>>arrayCor[i*2+1];
  54.     }
  55.     input.close();
  56.     sortir(arrayCor,columns);
  57.     double max,maxtest;
  58.     maxtest=0;
  59.     double min=distance(leftX,rightX,radius);
  60.     for (int i=0;i<columns;i++)
  61.     {
  62.         if (arrayCor[i*2+1]!=arrayCor[i*2-1])
  63.             max=distance(arrayCor[i*2],leftX,radius);
  64.         if (arrayCor[i*2+1]==arrayCor[i*2-1])
  65.         {
  66.             double k = distance(arrayCor[i*2],arrayCor[i*2-2],radius);
  67.             if (k>maxtest)
  68.                 maxtest=k;
  69.         }
  70.  
  71.         if (arrayCor[i*2+1]!=arrayCor[i*2+3])
  72.         {
  73.             double k = distance(arrayCor[i*2],rightX,radius);
  74.             if (k>maxtest)
  75.                 maxtest=k;
  76.             if (maxtest>max)
  77.                 max=maxtest;
  78.             if (max<min)
  79.                 min=max;
  80.             maxtest=0;
  81.         }
  82.     }
  83.     ofstream output;
  84.     output.open("TABLE.sol");
  85.     output<<fixed <<setprecision(3) << min;
  86.     output.close();
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement