Pagini recente » Cod sursa (job #2192145) | Arhiva de probleme | Cod sursa (job #141946) | Cod sursa (job #2923964) | Cod sursa (job #2894956)
#include <cstdio>
#include <cmath>
using namespace std;
FILE *fin, *fout;
struct point
{
double x, y;
};
struct triunghi
{
point p1, p2, p3;
};
double dist(point p1, point p2)
{
return sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));
}
double aria_tr(triunghi t)
{
double a = dist(t.p1, t.p2), b = dist(t.p1, t.p3), c = dist(t.p2, t.p3);
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
#define NMAX 1000000
point p[NMAX + 5];
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));
}
fprintf(fout, "%.5Lf", sum);
//.3%d-
fclose(fin);
fclose(fout);
return 0;
}