Cod sursa(job #1160186)

Utilizator serbanSlincu Serban serban Data 30 martie 2014 12:41:47
Problema Ograzi Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int n,m,w,h,oaie;
double arie,ARIE;
struct punct{
int x,y;
};
punct G[50005],oi;
double det(double A,double a,double B,double b,double C,double c)
{
    return abs((A*b+B*c+C*a-a*B-b*C-c*A)/2);
}
int main()
{
    int i,j;
    FILE *f=fopen("ograzi.in","r");
    FILE *g=fopen("ograzi.out","w");
    fscanf(f,"%d%d%d%d",&n,&m,&w,&h);
    ARIE=w*h;
    for(i=1;i<=n;i++)
        fscanf(f,"%d%d",&G[i].x,&G[i].y);
    while(m>0)
    {
        fscanf(f,"%d%d",&oi.x,&oi.y);
        for(i=1;i<=n;i++)
        {
            arie=det(G[i].x,G[i].y,oi.x,oi.y,G[i].x+w,G[i].y);
            arie+=det(G[i].x+w,G[i].y,oi.x,oi.y,G[i].x+w,G[i].y+h);
            arie+=det(G[i].x+w,G[i].y+h,oi.x,oi.y,G[i].x,G[i].y+h);
            arie+=det(G[i].x,G[i].y+h,oi.x,oi.y,G[i].x,G[i].y);
            if(arie==ARIE)
                oaie++,i=n+1;
        }
        m--;
    }
    fprintf(g,"%d\n",oaie);
    return 0;
}