Cod sursa(job #935527)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 3 aprilie 2013 19:45:26
Problema Rays Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct jap
{
    double x,y;
}v[200005],v2[200005];
bool cmp(jap a,jap b)
{
    return a.y<=b.y;
}
int main()
{
    freopen("rays.in","r",stdin);
    freopen("rays.out","w",stdout);
    int n,j,i,nr=0,m1=0,m2=0,x1,y1,y2;
    double dr;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d%d",&x1,&y1,&y2);
    if(y1>y2)
    {
        j=y1;
        y1=y2;
        y2=j;
    }
        if(x1>0)
        {
        m1++;
        v[m1].x=1.00*y1/x1;
        v[m1].y=1.00*y2/x1;
        }
        else
        {
            m2++;
            v2[m2].x=-1.00*y1/x1;
            v2[m2].y=-1.00*y2/x1;
        }
    }
    sort(v+1,v+m1+1,cmp);
    sort(v2+1,v2+m2+1,cmp);
     if(m1>0)
     {
    nr++;
    dr=v[1].y;
    for(i=2;i<=m1;i++)
    {
    if(v[i].x>dr)
    {
        nr++;
        dr=v[i].y;
    }
    }
     }
     if(m2>0)
     {
          nr++;
    dr=v2[1].y;
    for(i=2;i<=m2;i++)
    {
    if(v2[i].x>dr)
    {
        nr++;
        dr=v2[i].y;
    }
    }
     }
    printf("%d\n",nr);
    return 0;
}