Pagini recente » Cod sursa (job #1881481) | Cod sursa (job #44922) | Cod sursa (job #2352677) | Cod sursa (job #3149340) | Cod sursa (job #2207217)
#include <fstream>
#include <algorithm>
#include <math.h>
#include <vector>
using namespace std;
ifstream fin ("date.in");
ofstream fout("date.out");
int i,n,x,y,y2,r,d,ndr,nst;
double a,b;
pair<double,double> dr[200001], st[200001];
int mod(int val)
{
if(val<0)
return -val;
else
return val;
}
double sinus(int y, int x)
{
if(y==0)
return 0;
int ok=y/mod(y);
return 1.0*ok*(mod(y)*mod(y))/(mod(y)*mod(y)+x*x);
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>x>>y>>y2;
if(y>y2)
swap(y2, y);
if(x>0)
dr[++ndr]=make_pair(sinus(y, x), sinus(y2, x));
else
st[++nst]=make_pair(sinus(y, x), sinus(y2, x));
}
sort(dr+1, dr+ndr+1);
a=-10000000;b=-10000000;
for(i=1;i<=ndr;i++)
{
if(dr[i].first>b)
{
a=dr[i].first,b=dr[i].second;
r++;
}
else
{
a=dr[i].first;
b=min(b, dr[i].second);
}
}
sort(st+1, st+1+nst);
a=-10000000;b=-10000000;
for(i=1;i<=nst;i++)
{
if(st[i].first>b)
{
a=st[i].first,b=st[i].second;
d++;
}
else
{
a=st[i].first;
b=min(b, st[i].second);
}
}
fout<<r+d;
fin.close();
fout.close();
return 0;
}