Cod sursa(job #917331)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 17 martie 2013 16:51:55
Problema Aria Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.62 kb
///*
#include <fstream>
#include <iomanip>

using namespace std;

struct punct
{
   double x;
   double y;
}puncte[100005];

   ifstream fin("aria.in");
   ofstream fout("aria.out");
int main()
{
    
    double a=0;
    int n,i;
    double x1,y1;
    fin>>n;
    
    fin>>x1>>y1;
    puncte[0].x=x1;
    puncte[0].y=y1;
    
    for(i=1;i<n;i++)
    {            
        fin>>x1>>y1;
        puncte[i].x=x1;
        puncte[i].y=y1;
        a+=((puncte[i-1].x*puncte[i].y-puncte[i].x*puncte[i-1].y)/2);        
    }
    
    a+=((puncte[n-1].x*puncte[0].y-puncte[0].x*puncte[n-1].y)/2);
    
    if(a<0)
      a*=(-1);
    
    fout<<fixed<<setprecision(6);
    fout<<a<<'\n';
    
    //fin.close();
    //fout.close();
    //system("PAUSE");
    return 0;
}/*/
#include <iostream>
# include <cassert>
# include <cstdio>
# include <cmath>
 
const char *FIN = "aria.in", *FOU = "aria.out";
const int MAX = 100005;
 
struct punct {
    double x, y;
} vec[MAX];
 
int N;
double sol;
 
int main (void) {
 //   assert (freopen (FIN, "r", stdin));
  //  assert (freopen (FOU, "w", stdout));
 
    assert (scanf ("%d", &N) == 1);
    assert (1 <= N && N <= 100000);
    for (int i = 0; i < N; ++i) {
        assert (scanf ("%lf %lf", &vec[i].x, &vec[i].y) == 2);
        assert (-10000000 <= vec[i].x && vec[i].x <= 10000000);
        assert (-10000000 <= vec[i].y && vec[i].y <= 10000000);
    }
    vec[N] = vec[0];
    for (int i = 0; i < N; ++i)
        sol += (vec[i].x * vec[i + 1].y - vec[i + 1].x * vec[i].y);
    printf ("%lf", fabs (sol / 2.0));
    system("PAUSE");
}//*/