Pagini recente » Istoria paginii runda/training_round_1/clasament | Rating Torge Adelin (torgeadelin) | Istoria paginii runda/train-hard/clasament | Istoria paginii runda/pie2/clasament | Cod sursa (job #2018383)
#include<fstream>
#include<cmath>
#include<iostream>
#include<iomanip>
#define x first
#define y second
using namespace std;
ifstream fin("aria.in");
ofstream fout("aria.out");
int n;
long double mx,my,a;
typedef pair<long double,long double> per;
per x[100005];
long double arie(per a,per b,per c)
{
return abs(a.x*b.y+b.x*c.y+c.x*a.y-b.y*c.x-c.y*a.x-a.y*b.x);
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>x[i].x>>x[i].y;
mx+=x[i].first;
my+=x[i].second;
}
mx/=n;
my/=n;
n++;
x[n].x=x[1].x;
x[n].y=x[1].y;
// cout<<arie(make_pair(0,0),make_pair(4,0),make_pair(0,4))/2<<'\n';
for(int i=2;i<=n;i++)
{
a+=arie(x[i],x[i-1],make_pair(mx,my))/2;
// cout<<arie(x[i],x[i-1],make_pair(mx,my))<<'\n';
}
fout<<fixed<<setprecision(9)<<a;
}