Cod sursa(job #1685748)

Utilizator mouse_wirelessMouse Wireless mouse_wireless Data 11 aprilie 2016 20:32:34
Problema Aria Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <vector>
#include <cstring>
#include <cctype>
#include <algorithm>
using namespace std;

#ifdef INFOARENA
#define ProblemName "aria"
#endif

#define MCONCAT(A, B) A B
#ifdef ProblemName
#define InFile MCONCAT(ProblemName, ".in")
#define OuFile MCONCAT(ProblemName, ".out")
#else
#define InFile "fis.in"
#define OuFile "fis.out"
#endif

typedef pair<double, double> Point;

inline double cross(Point &A, Point &B) {
	return (A.first * B.second - A.second * B.first);
}

int main() {
	assert(freopen(InFile, "r", stdin));
	assert(freopen(OuFile, "w", stdout));
	int N;
	scanf("%d", &N);
	Point FP;
	scanf("%lf%lf", &FP.first, &FP.second);
	Point prev = FP, cur;
	double ans = 0;
	for (int i = 1; i < N; i++) {
		scanf("%lf%lf", &cur.first, &cur.second);
		ans += cross(prev, cur);
		prev = cur;
	}
	ans += cross(cur, FP);
	ans /= 2.0;
	printf("%lf\n", ((ans < 0) ? -ans : ans));
	return 0;
}