Cod sursa(job #2642012)

Utilizator eugen5092eugen barbulescu eugen5092 Data 13 august 2020 13:30:36
Problema Aria Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>
using namespace std;

ifstream ci("aria.in");
ofstream cou("aria.out");

struct punct
{
	double x,y;
};

int n;
punct v[100005];
punct pct;

double calc(punct a,punct b,punct c)
{
	double p=0;
	double ab,ac,bc;
	ab=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
	ac=sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y));
	bc=sqrt((c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y));
	p+= ab;
	p+= ac;
	p+= bc;
	p/=2;
	return sqrt(p*(p-ab)*(p-ac)*(p-bc));
}

void citire()
{
	ci>>n;
	double a=0,b=0;
	for(int i=1; i<=n; i++)
	{
		ci>>v[i].x>>v[i].y;
		a+=v[i].x;
		b+=v[i].y;
	}
	pct.x=(a*1.0)/n;
	pct.y=(b*1.0)/n;
	//cout<<pct.x<<" "<<pct.y<<"\n";
}

void rez()
{
	punct b,c;
	int i;
	double arie=0;
	punct pct2;
	for(i=1; i<=n-1; i++)
	{
		b=v[i];
		c=v[i+1];
		//cout<<pct.x<<" "<<pct.y<<"\n";
		arie+=calc(pct,b,c);
	}
	b=v[1];
	c=v[n];
    //cout<<pct.x<<" "<<pct.y<<"\n";
    pct2=pct;
    //cout<<pct2.x<<" "<<pct2.y<<"\n";
	arie+=calc(pct,b,c);
	cou<<fixed<<setprecision(6)<<arie;
	//cou<<arie;
}

int main()
{
	citire();
	rez();
	return 0;
}