Pagini recente » Cod sursa (job #1631173) | Cod sursa (job #2702113) | Cod sursa (job #1802404) | Cod sursa (job #710290) | Cod sursa (job #1545209)
/*
http://www.infoarena.ro/problema/aria
*/
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
struct point { int x, y; };
point puncte[100001];
int N;
double solutia;
void read()
{
ifstream fin("aria.in");
fin >> N;
for (int i = 0; i < N; ++i)
{
fin >> puncte[i].x >> puncte[i].y;
}
puncte[N] = puncte[0];
fin.close();
}
double modul(double x)
{
return (x < 0) ? -x : x;
}
double aria(point A, point B, point C)
{
int first = A.x * B.y + B.x + C.y + C.x * A.y;
int second = C.x * B.y + A.x * C.y + B.x * A.y;
double result = (first - second) * 0.5;
return modul(result);
}
void solve()
{
for (int i = 0; i <= N; ++i)
{
point A = puncte[i];
point B = puncte[i + 1];
solutia += (A.x * B.y - B.x * A.y);
}
solutia *= 0.5;
}
void write()
{
ofstream fout("aria.out");
fout << setprecision(5) << solutia << "\n";
fout.close();
}
int main()
{
read();
solve();
write();
return 0;
}