Pagini recente » Cod sursa (job #1321140) | Cod sursa (job #427239) | Cod sursa (job #2046925) | Cod sursa (job #2334441) | Cod sursa (job #2274809)
//
// main.cpp
// Aria Poligon
//
// Created by Darius Buhai on 27/10/2018.
// Copyright © 2018 Darius Buhai. All rights reserved.
//
#include <iostream>
#include <fstream>
#define MAXL 1000002
using namespace std;
ifstream fin("aria.in");
ofstream fout("aria.out");
int n;
double s;
double maxx, minx = MAXL, maxy, miny = MAXL;
struct point{
double x = MAXL, y = MAXL;
};
point reference = {MAXL, MAXL};
point a[100001];
double det(point a,point b, point c = reference)
{
double s = (a.x*b.y + b.x*c.y + a.y*c.x) - (c.x*b.y + a.x*c.y + b.x*a.y);
return s<0 ? -s : s;
}
int main() {
fin>>n;
for(int i=0;i<n;i++){
fin>>a[i].x>>a[i].y;
if(a[i].x>maxx)
maxx = a[i].x;
if(a[i].y>maxy)
maxy = a[i].y;
if(a[i].x<minx)
minx = a[i].x;
if(a[i].y<miny)
miny = a[i].y;
}
reference.x = (maxx+maxy)/2;
reference.y = miny-1;
point lastup = reference, lastdown = reference;
for(int i=0;i<n;i++){
if(a[i].y>=(miny+maxy)/2)
{
if(lastup.x!=MAXL)
s += det(lastup, a[i]);
lastup = a[i];
}
else
{
if(lastdown.x!=MAXL)
s -= det(lastdown, a[i]);
lastdown = a[i];
}
}
fout<<s;
return 0;
}