Cod sursa(job #1023609)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 7 noiembrie 2013 13:32:51
Problema Aria Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.64 kb
#include <iostream>
#include <fstream>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <utility>
#include <string>
#include <vector>
#include <list>
#include <iomanip>

using namespace std;

typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef vector<vi> vvi;
typedef vector<string> vs;
typedef map<string, int> msi;
typedef long long ll;
typedef unsigned long long ull;

typedef vector<int>::iterator vit;
typedef vector<ii>::iterator viit;
typedef vector<string>::iterator vst;

#define REP(i, n) for (int i = 1; i <= n; ++i)
#define FOR(i, a, b) for (int i = a; i <= b; ++i)
#define FORD(i, a, b) for (int i = a; i >= b; --i)
#define MP make_pair
#define PB push_back
#define ALL(x) (x).begin(), x.end()
#define SIZE(x) (int)(x).size()
#define FOREACH(it, c) for (__typeof(c.begin()) it = c.begin(); it != c.end(); ++it)
#define INF 1023456789
#define DEBUG(x) cerr << #x << ": " << x << endl;
#define ERR(...) fprintf(stderr, __VA_ARGS__);

ifstream f("aria.in");
ofstream g("aria.out");

inline double getAria (double x1, double y1, double x2, double y2, double x3, double y3) {
	return (x1*y2 + x2*y3 + x3*y1 - x1*y3 - x2*y1 - x3*y2 ) / 2;
}

int i, j, n, m;
double x, y, xPrev, yPrev, xFirst, yFirst;
double aria;

int main() {
	f >> n;

	f >> xFirst >> yFirst;
	xPrev = xFirst;
	yPrev = yFirst;

	REP (i, n-1) {
		f >> x >> y;
		aria += getAria (0, 0, xPrev, yPrev, x, y);
		xPrev = x;
		yPrev = y;
	}

	aria += getAria (0, 0, xPrev, yPrev, xFirst, yFirst);

	g << fixed << setprecision(6);
	g << aria;

}