Pagini recente » Cod sursa (job #2099219) | Cod sursa (job #824166) | Cod sursa (job #1790540) | Cod sursa (job #1282721) | Cod sursa (job #2900538)
#include <cstdio>
#include <cmath>
#include <fstream>
#include <iomanip>
#include <iostream>
using namespace std;
FILE *fin;
struct point
{
double x, y;
};
struct triunghi
{
point p1, p2, p3;
};
long double dist(point p1, point p2)
{
return sqrt((long double)(p2.x - p1.x) * (p2.x - p1.x) + (long double)(p2.y - p1.y) * (p2.y - p1.y));
}
long double aria_tr(triunghi t)
{
long double a = dist(t.p1, t.p2), b = dist(t.p1, t.p3), c = dist(t.p2, t.p3);
long double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
#define NMAX 1000000
point p[NMAX + 5];
ofstream fout ("aria.out");
int main()
{
fin = fopen("aria.in", "r");
//fout = fopen("aria.out", "w");
int n;
fscanf(fin, "%d", &n);
int i;
for(i = 1; i <= n; i++)
fscanf(fin, "%lf %lf", &p[i].x, &p[i].y);
triunghi t;
t.p1 = p[1];
long double sum = 0;
for(i = 2; i < n; i++)
{
t.p2 = p[i];
t.p3 = p[i + 1];
sum += aria_tr(t);
//fprintf(fout , "1 %d %d %lf\n" , i , i + 1 , aria_tr(t));
}
fout << fixed << setprecision(5) << sum;
//.3%d-
fclose(fin);
fout.close();
return 0;
}