Cod sursa(job #957254)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 4 iunie 2013 18:18:35
Problema Aria Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb

#include <cstdio>
#include <vector>
#include <algorithm>
#include <utility>
#include <cmath>
#include <iostream>

typedef std::pair<double,double> Point;
typedef std::vector<Point> Polygon;

Polygon p;
long double Result;

inline void Read (void)
{
	std::freopen("aria.in","r",stdin);
	int n;
	std::scanf("%d\n",&n);
	double x, y;
	while (n)
	{
		std::scanf("%lf %lf",&x,&y);
		p.push_back(std::make_pair(x,y));
		--n;
	}
	std::fclose(stdin);
}

inline void Print (void)
{
	std::freopen("aria.out","w",stdout);
	std::printf("%.5lf\n",Result);
	std::fclose(stdout);
}

inline double Area (Polygon &p)
{
	const int END(p.size());
	p.push_back(p.front());
	double result(0);
	for (int i(0) ; i < END ; ++i)
		result += p[i].first * p[i + 1].second - p[i].second * p[i + 1].first;
	p.pop_back();
	return std::abs(result) / 2;
}

int main (void)
{
	Read();
	Result = Area(p);
	Print();
	return 0;
}