Pagini recente » Cod sursa (job #2667553) | Cod sursa (job #2156340) | Cod sursa (job #1684884) | Cod sursa (job #390544) | Cod sursa (job #1500924)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define MAX 200001
#define swap(t,a,b)(t=a,a=b,b=t)
struct LINE
{
int x,a_y1,a_y2;
};
LINE v1[MAX],v2[MAX];
int N, v1_l=0, v2_l=0;
bool sort_f_1(LINE e1, LINE e2)
{
return e1.a_y2*e2.x < e1.x*e2.a_y2;
}
int main()
{
FILE *in = fopen("rays.in", "r");
FILE *out = fopen("rays.out", "w");
fscanf(in, "%d", &N);
int x, y1, y2,t;
for (int i = 1;i <= N;++i)
{
fscanf(in, "%d", &x);
fscanf(in, "%d", &y1);
fscanf(in, "%d", &y2);
if (y1 > y2)
swap(t, y1, y2);
if (x > 0)
{
++v1_l;
v1[v1_l].x = x;
v1[v1_l].a_y1 = y1;
v1[v1_l].a_y2 = y2;
}
else
{
++v2_l;
v2[v2_l].x = x*(-1);
v2[v2_l].a_y1 = y1;
v2[v2_l].a_y2 = y2;
}
}
int sol = 1;
int j = 1;
if (v1_l > 0)
{
sort(v1 + 1, v1 + v1_l + 1, sort_f_1);
for (int i = 2;i <= v1_l;++i)
{
if (v1[j].a_y2*v1[i].x < v1[j].x*v1[i].a_y1)
{
++sol;
j = i;
}
}
}
if (v2_l > 0)
{
sort(v2 + 1, v2 + v2_l + 1, sort_f_1);
j = 1;
++sol;
for (int i = 2;i <= v2_l;++i)
{
if (v2[j].a_y2*v2[i].x < v2[j].x*v2[i].a_y1)
{
++sol;
j = i;
}
}
}
fprintf(out, "%d", sol);
fclose(in);
fclose(out);
return 0;
}