Cod sursa(job #1278930)

Utilizator TibixbAndrei Tiberiu Tibixb Data 29 noiembrie 2014 15:56:50
Problema Aria Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.44 kb
#include<fstream>
#include<iomanip>
using namespace std;
int n, i, ii, j, poz, semn, cif, nr, nrz;
char ch[15];
struct cub{
    int x;
    int y;
};
double s;
cub zero, v[100003];
double det(cub a, cub b, cub c){
    return ((b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y))/2.0;
}
ifstream in("aria.in");
ofstream out("aria.out");
int main(){
    in>>n;
    in.get();
    for(ii=1; ii<=n; ii++){
        in>>ch;
        poz=0;
        nr=0;
        semn=1;
        cif=1;
        if(ch[0]=='-'){
            poz++;
            semn=-1;
        }
        for(i=poz; ch[i]>='0' && ch[i]<='9'; i++)
            nr=nr*10+(ch[i]-'0');
        for(j=i+1; ch[j]>='0' && ch[j]<='9'; j++){
            nrz=nrz*10+(ch[j]-'0');
            cif*=10;
        }
        nrz/=cif;
        nr+=nrz;
        nr*=semn;
        v[ii].x=nr;
        in.get();

        in>>ch;
        poz=0;
        nr=0;
        semn=1;
        cif=1;
        if(ch[0]=='-'){
            poz++;
            semn=-1;
        }
        for(i=poz; ch[i]>='0' && ch[i]<='9'; i++)
            nr=nr*10+(ch[i]-'0');
        for(j=i+1; ch[j]>='0' && ch[j]<='9'; j++){
            nrz=nrz*10+(ch[j]-'0');
            cif*=10;
        }
        nrz/=cif;
        nr+=nrz;
        nr*=semn;
        v[ii].y=nr;
        in.get();
    }
    v[0]=v[n];
    for(i=0; i<n; i++)
        s+=det(zero, v[i], v[i+1]);
    out<<setprecision(6)<<fixed<<s;
return 0;
}