Pagini recente » Cod sursa (job #2226937) | Cod sursa (job #1794624) | Cod sursa (job #2767818) | Cod sursa (job #1155728) | Cod sursa (job #2052255)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fin("aria.in");
ofstream fout("aria.out");
int n;
struct Punct{
double x,y;
}A[100003];
inline float plan(int i,int j,int p)
{
return (A[p].x - A[i].x)*(A[j].y - A[i].y) + (A[i].y - A[p].y)*(A[j].x - A[i].x);
}
int main()
{
fin>>n;
for(int i=1; i<=n; ++i)
fin>>A[i].x>>A[i].y;
//originea O (0,0) sau A[0] = {0,0}
double aria = 0;
for(int i=1; i<n; ++i)
//triunghiul A[i],A[i+1],O
{
double a = (A[i].x * A[i+1].y - A[i+1].x*A[i].y)/2;
aria += (plan(i,i+1,0) > 0 ? -a:a);
}
if(plan(n,1,0) > 0)
aria -= (A[n].x * A[1].y - A[1].x*A[n].y)/2;
else aria += (A[n].x * A[1].y - A[1].x*A[n].y)/2;
fout<<fixed<<setprecision(6)<<aria<<"\n";
}