Pagini recente » Cod sursa (job #1345814) | Statistici Teka Jef (tekajef) | Profil Dan.Baibata | Rating Silviu (Silvester) | Cod sursa (job #2016771)
#include <fstream>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f("aria.in");
ofstream g("aria.out");
vector<pair<long double,long double> >V;
int N;
long double rez;
long double det(pair<long double,long double> a,pair<long double,long double> b,pair<long double,long double> c)
{
return a.first*b.second+b.first*c.second+c.first*a.second-a.first*c.second-b.first*a.second-c.first*b.second;
}
bool cmp(pair<long double,long double> a,pair<long double,long double> b)
{
if(a==make_pair((long double)0,(long double)0))return 1;
if(b==make_pair((long double)0,(long double)0))return 0;
if(det({0,0},a,b))return det({0,0},a,b)>0;
return a.first*a.first+a.second*a.second<b.first*b.first+b.second*b.second;
}
long double arie(vector<pair<long double,long double> > V)
{
for(int i=1;i<V.size();i++){V[i].first-=V[0].first;V[i].second-=V[0].second;}
V[0]={0,0};
sort(V.begin()+1,V.end(),cmp);
long double A=0;
for(int i=0;i<V.size();i++)
{
A+=det(V[0],V[i],V[(i+1)%V.size()]);
}
A=abs(A/2);
return A;
}
int main()
{
f.sync_with_stdio(false);
g.sync_with_stdio(false);
f>>N;
for(int i=1;i<=N;i++)
{
long double x,y;
f>>x>>y;
V.push_back({x,y});
}
rez=arie(V);
g<<fixed<<setprecision(7)<<rez;
f.close();
g.close();
return 0;
}