Pagini recente » Cod sursa (job #620819) | Cod sursa (job #620809) | Cod sursa (job #408978) | Cod sursa (job #383612) | Cod sursa (job #1420568)
// Arie poligon oarecare - O(N)
#include <fstream>
#include <cmath>
#define Nmax 100099
using namespace std;
ifstream f("aria.in");
ofstream g("aria.out");
int N;
struct point{long double x,y;}P[Nmax];
/* arie poligin pt are varfurile sunt date in ordine trig */
long double Arie(point P[Nmax]) {
long double sum = 0.0;
for (int i = 1; i <= N; ++i)
sum += (P[i].x * P[i+1].y - P[i+1].x * P[i].y);
sum *= 0.5;
return fabs(sum);
}
int main() {
f >> N;
for (int i = 1; i <= N; ++i) f >> P[i].x >> P[i].y;
P[N+1] = P[1]; /* inchide poligonul */
g.precision(5);
g<<fixed<<Arie(P)<<'\n';
f.close();g.close();
return 0;
}