Cod sursa(job #2392200)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 29 martie 2019 19:27:21
Problema Aria Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.55 kb
#include<iostream>
#include<fstream>
#include<iomanip>
const int M=20000000;
int n,i,e,f[]={1,10,100,1000,10000,100000,1000000};
double x,y,a,b,c,d;
long double s;
char q[M];
inline int B()
{
  	int s=0;
  	for(;q[e]<'0'||q[e]>'9';e++);
  	for(;q[e]>='0'&&q[e]<='9';e++)
  		s=s*10+q[e]-'0';
  	return s;
}
inline double C()
{
    int s=1,v=-1;
    double x=0;
    for(;(q[e]<'0'||q[e]>'9')&&q[e]!='-'&&q[e]!='.';e++);
    for(;(q[e]>='0'&&q[e]<='9')||q[e]=='-'||q[e]=='.';e++)
        if(q[e]=='-')
            s=-1;
        else if(q[e]=='.')
            v=0;
        else if(v==-1)
            x=x*10+q[e]-'0';
        else
            x=x+1.0*(q[e]-'0')/f[++v];
    return x*s;
}
int main()
{
    ifstream f("aria.in");
    ofstream g("aria.out");
    f.read(q,M),n=B(),x=C(),y=C(),a=c=x,b=d=y;
    for(i=0;i<n-1;i++)
        x=C(),y=C(),s+=(long double)a*y-(long double)x*b,a=x,b=y;
    s+=(long double)a*d-(long double)b*c,s/=2;
    g<<setprecision(6)<<fixed<<s;
}
/*#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

int main()
{
    ifstream fin ("aria.in");
    ofstream fout ("aria.out");
    int n;
    double xinit,yinit,xant,yant,x,y;
    long double arie=0;
    fin>>n>>x>>y;
    xinit=xant=x;
    yinit=yant=y;
    for (int i=2;i<=n;++i)
    {
        fin>>x>>y;
        arie+=(long double)xant*y-(long double)x*yant;
        xant=x;
        yant=y;
    }
    arie+=(long double)xant*yinit-(long double)xinit*yant;
    arie/=2;
    fout<<setprecision(6)<<fixed<<arie;
    return 0;
}
*/