| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
buy one get another for free// MyFirstApp.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <vector>
#include <math.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
typedef __int64 lld;
const int MAXN = 512;
//经度角a, 纬度角b
double GeodesicDistance(double r, double a1, double b1, double a2, double b2)
{
return r * acos(cos(b1) * cos(b2) * cos(a1 - a2) + sin(b1) * sin(b2));
}
struct Point
{
double x, y;
Point operator -(const Point& other) const
{
Point result;
result.x = x - other.x;
result.y = y - other.y;
return result;
}
Point operator +(const Point& other) const
{
Point result;
result.x = x + other.x;
result.y = y + other.y;
return result;
}
Point operator *(double c) const
{
Point result = *this;
result.x *= c;
result.y *= c;
return result;
}
};
static void Rotate90(Point& dir)
{
double x = -dir.y;
double y = dir.x;
dir.x = x;
dir.y = y;
}
Point Calc(const Point& a, const Point& b)
{
double dx = a.x - b.x;
double dy = a.y - b.y;
double h = sqrt(2.0 * 2 - (dx * dx + dy * dy) / 4);
Point dir = b - a;
double len = sqrt(dir.x * dir.x + dir.y * dir.y);
dir.x /= len;
dir.y /= len;
Rotate90(dir);
dir.x *= h;
dir.y *= h;
Point mid = (a + b) * 0.5;
return dir + mid;
}
int main()
{
int n;
Point points[16][16];
while (cin >> n && n > 0)
{
std::vector<double> xs;
for(int i=0;i<n;i++)
{
double x;
cin >> x;
xs.push_back(x);
}
std::sort(xs.begin(), xs.end());
for (int i = 0; i < n; i++)
{
points[0][i].x = xs[i];
points[0][i].y = 1;
}
for (int row = 1; row < n; row++)
{
for (int i = 0; i < n - row; i++)
{
points[row][i] = Calc(points[row - 1][i], points[row - 1][i + 1]);
}
}
double x = fabs(points[n - 1][0].x) < 1e-6 ? 0 : points[n - 1][0].x;
double y = fabs(points[n - 1][0].y) < 1e-6 ? 0 : points[n - 1][0].y;
printf("%.4f %.4f\n", x, y);
}
return 0;
}
/*
4 1.0 4.4 7.8 11.2
1 1.0
6 1.0 3.0 5.0 7.0 9.0 11.0
10 1.0 3.0 5.0 7.0 9.0 11.0 13.0 15.0 17.0 20.4
5 1.0 4.4 7.8 14.6 11.2
0
Sample Output
6.1000 4.1607
1.0000 1.0000
6.0000 9.6603
10.7000 15.9100
7.8000 5.2143
*/
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator