Cod sursa(job #1973005)

Utilizator AndreiD31Dragan Andrei AndreiD31 Data 24 aprilie 2017 11:06:00
Problema Aria Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;
ifstream f("aria.in");
ofstream g("aria.out");

struct punct
{
    double x,y;
}a[100001];

int compare (punct q,punct t)
{
    if(q.x==t.x)return (q.y<t.y);
    return (q.x<t.x);
}

double arie (double xA,double yA,double xB,double yB, double xC, double yC)
{

  double dif;
   dif=(yC-yA)*(xB-xA)-(yB-yA)*(xC-xA);
   if(dif<0)dif=dif*(-1);
   dif=dif/2;

   return dif;

}

int n,i;
double suma1,suma,suma2,p1,p2;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a[i].x>>a[i].y;
       //g<<a[i].x<<'\n';
        suma1+=a[i].x;
        suma2+=a[i].y;
    }

    double y=n;
     p1=suma1/y;
     p2=suma2/y;


    for(i=1;i<=n-1;i++)
    {
        suma+=arie(p1,p2,a[i].x,a[i].y,a[i+1].x,a[i+1].y);
    }

    suma+=arie(p1,p2,a[n].x,a[n].y,a[1].x,a[1].y);
  //  sort(a+1,a+n+1,compare);



  /*  double suma=0;

    suma=suma+arie(a[1].x,a[1].y,a[2].x,a[2].y,a[3].x,a[3].y);
    for(i=4;i<=n;i++)
    {
     suma=suma+arie(a[i-2].x,a[i-2].y,a[i-1].x,a[i-1].y,a[i].x,a[i].y);
    }

    g<<suma;
    */

    g<<setprecision(7)<<suma;
    return 0;
}