Pagini recente » Cod sursa (job #542271) | Cod sursa (job #2282914) | Istoria paginii runda/123235125 | Cod sursa (job #1833740) | Cod sursa (job #2201247)
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("aria.in");
ofstream g("aria.out");
int n;
struct pt
{
double x, y;
pt(double xx, double yy)
:x(xx), y(yy){}
};
inline double lng(pt p1, pt p2)
{
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
vector<pt> v;
vector<double> s;
inline double arie(int i1, int i2)
{
double l=lng(v[i1], v[i2]), p=(s[i1]+s[i2]+l)/2;
return sqrt(p*(p-s[i1])*(p-s[i2])*(p-l));
}
void rd()
{
f>>n;
v.resize(n+1, pt(0, 0));
s.resize(n+1);
int i=1;
f>>v[i].x>>v[i].y;
i++;
while(f>>v[i].x>>v[i].y)
{
s[i]=lng(v[1], v[i]);
i++;
}
}
double arie_poligon()
{
double a=0;
for(int i=2;i<n;i++)
a+=arie(i, i+1);
return a;
}
int main()
{
rd();
g<<arie_poligon();
f.close();
g.close();
return 0;
}