解题思路与1206一致
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
struct circle
{
double x;
double y;
};
bool com(circle a,circle b)
{
return a.x < b.x;
}
int main()
{
int n;
while(cin >> n && n != 0)
{
vector<circle> data(n * (n + 1) / 2);
for(int i = 0;i < n;i++)
{
cin >> data[i].x;
data[i].y = 1.0;
}
sort(data.begin(),data.begin() + n,com);
int count = n;
for(int i = n; i > 0;i--)
{
for(int j = 0;j < i - 1;j++)
{
double m1 = data[count - i + 1].x - data[count - i].x;
double m2 = data[count - i + 1].y - data[count - i].y;
double a1 = atan(m2 / m1);
double a2 = acos(sqrt(m1 * m1 + m2 * m2) / 2 / 2);
double a = a1 + a2;
data[count].x = data[count - i].x + 2 * cos(a);
data[count].y = data[count - i].y + 2 * sin(a);
count++;
}
}
cout.precision(4);
cout << fixed << data[data.size() - 1].x << " " << fixed <<data[data.size() - 1].y << endl;
}
return 0;
}