Pagini recente » Cod sursa (job #2870131) | Cod sursa (job #1422618) | Cod sursa (job #2883656) | Cod sursa (job #1665223) | Cod sursa (job #2210009)
#include <bits/stdc++.h>
using namespace std;
ifstream f("aria.in");
ofstream g("aria.out");
int n,m,x,y;
struct ceva
{
int x,y;
}q[102];
int cadran(int x, int y)
{
if(x>0 && y>=0)
return 1;
if(x>=0 && y<0)
return 4;
if(y>0 && x<=0)
return 2;
return 3;
}
int det(int X1,int Y1,int X2,int Y2,int X3,int Y3)
{
return (X2-X1)*(Y3-Y1)-(X3-X1)*(Y2-Y1);
}
bool cmp(ceva a,ceva b)
{
int c1=cadran(a.x,a.y);
int c2=cadran(b.x,b.y);
if(c1!=c2)
return c1<c2;
else
{
int d=det(0,0,a.x,a.y,b.x,b.y);
if(d!=0)
return d>0;
else
return a.x*a.x+a.y*a.y<b.x*b.x+b.y*b.y;
}
}
int main()
{
f>>n;
for(int i=1;i<=n;i++)
{
f>>q[i].x>>q[i].y;
}
sort(q+1,q+n+1,cmp);
double s=0;
for(int i=1;i<=n-1;i++)
{
s=s+det(0,0,q[i].x,q[i].y,q[i+1].x,q[i+1].y);
}
s=s+det(0,0,q[n].x,q[n].y,q[1].x,q[1].y);
s=s/2;
g<<s;
return 0;
}