Cod sursa(job #2064664)

Utilizator theodor.vladTheodor Vlad theodor.vlad Data 12 noiembrie 2017 17:41:12
Problema Aria Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <cmath>

using namespace std;
FILE * fin = fopen("aria.in", "r");
FILE * fout = fopen("aria.out", "w");

struct punct
{
	long double x, y;
};

long double calc_arie(punct *, int);

int n;
punct puncte[100005];

int main()
{
	fscanf(fin, "%d", &n);
	for (int i = 1; i <= n; i++)
		fscanf(fin, "%Lf%Lf", &puncte[i].x, &puncte[i].y);

	long double arie = calc_arie(puncte, n);
	fprintf(fout, "%0.5Lf", arie);

	return 0;
}

long double calc_arie(punct * a, int n)
{
	long double arie = 0;

	for (int i = 2; i <= n - 1; i++)
	{
		long double x1 = a[1].x, y1 = a[1].y;
		long double x2 = a[i].x, y2 = a[i].y;
		long double x3 = a[i + 1].x, y3 = a[i + 1].y;
		arie += fabs((x1 * y2 + x2 * y3 + x3 * y1 - x3 * y2 - x2 * y1 - x1 * y3) / 2.0);
	}

	return arie;
}