Pagini recente » Cod sursa (job #1584962) | Cod sursa (job #1945016) | Cod sursa (job #2237593) | Cod sursa (job #1019574) | Cod sursa (job #3257463)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
using namespace std;
double computeArea(const vector<pair<int, int>> &points) {
int n = points.size();
long long sum1 = 0, sum2 = 0;
for (int i = 0; i < n; ++i) {
int x1 = points[i].first;
int y1 = points[i].second;
int x2 = points[(i + 1) % n].first;
int y2 = points[(i + 1) % n].second;
sum1 += 1LL * x1 * y2;
sum2 += 1LL * y1 * x2;
}
return abs(sum1 - sum2) / 2.0;
}
int main() {
ifstream fin("aria.in");
ofstream fout("aria.out");
int n;
fin >> n;
vector<pair<int, int>> points(n);
for (int i = 0; i < n; ++i) {
in >> points[i].first >> points[i].second;
}
double area = computeArea(points);
if (fabs(area - round(area)) < 1e-9) {
fout << static_cast<long long>(area) << "\n";
} else {
fout.precision(10);
fout << fixed << area << "\n";
}
return 0;
}