Afişează mesaje
|
Pagini: [1]
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 285 Geometry
|
: Martie 30, 2017, 21:19:22
|
#include<iostream> #include<fstream> using namespace std; struct element { long long x1,y1,x2,y2; }; element v[10000]; int verificare(int i,int j) { int ok=0,a1,a2,b1,b2,c1,c2; a1=v.y2-v.y1; b1=v.x2*(-1)+v.x1; c1=v.y1*v.x2-v.y2*v.x1; a2=v[j].y2-v[j].y1; b2=v[j].x2*(-1)+v[j].x1; c2=v[j].y1*v[j].x2-v[j].y2*v[j].x1; if((a1*v[j].x1+b1*v[j].y1+c1)*(a1*v[j].x2+b1*v[j].y2+c1)<=0) { if((a2*v.x1+b2*v.y1+c2)*(a2*v.x2+b2*v.y2+c2)<=0) { ok=1; } } return ok; } int conditie1(int i,int j) { float n1,n2,ok=0; n1=(float)(v.y2-v.y1)/(v.x2-v.x1); n2=(float)(v[j].y2-v[j].y1)/(v[j].x2-v[j].x1); if(n1!=n2) { ok=1; } return ok; } int main() { long long n,i,j,nr=0; fstream f("geometry.in",ios::in); f>>n; for(i=1;i<=n;i++) { f>>v.x1>>v.y1>>v.x2>>v.y2; } f.close(); for(i=1;i<n;i++) { for(j=i+1;j<=n;j++) { if(conditie1(i,j)==1) { if(verificare(i,j)==1) { nr++; } } } } fstream g("geometry.out",ios::out); g<<nr; g.close(); }
|
|
|
|