Pagini recente » Cod sursa (job #122847) | Cod sursa (job #323920) | Cod sursa (job #2406602) | Cod sursa (job #2947590) | Cod sursa (job #37807)
Cod sursa(job #37807)
#include <stdio.h>
#include <math.h>
#define maxN 600
#define maxND 600
#define MYPI 3.1415926535897932384626433832795
struct gap{
double a,b;
};
int n,X1[maxN],Y1[maxN],X2[maxN],Y2[maxN], sw[maxN];
gap vec[maxN];
void inputFunc(){
FILE*fi=fopen("laser.in","r");
fscanf(fi,"%d",&n);
for(int i=0;i<n;i++)fscanf(fi,"%d %d %d %d",X1+i,Y1+i,X2+i,Y2+i);
for(int i=0;i<n;i++)fscanf(fi,"%d",sw+i);
fclose(fi);
}
double radToDeg(const double&x){return x*180/MYPI;}
void stable(double&x){while(x<0)x+=360;while(x>=360)x-=360;}
double stable2(double x){while(x<0)x+=360;while(x>=360)x-=360;return x;}
void makeGap(int i,int w){
double a=radToDeg(atan((double)Y1[i]/X1[i])),b=radToDeg(atan((double)Y2[i]/X2[i])),c;
if(stable2(a-b)<180){
c=a;a=b;b=c;
}
vec[w].a=stable2(a);vec[w].b=stable2(b);
}
/*
void inter(int i,int j,int w){
const gap o=vec[i],p=vec[j],aux;
double u1=stable2(o.b-o.a), u2=stable2(p.b-p.a),u3;
if(u1<u2){u3=u1;u1=u2;u2=u3;aux=o;o=p;p=aux;}
double oapa=stable2(o.a-p.a), oapb=stable2(o.a-p.b), obpa=stalbe2(o.b-p.a), obpb=stable2(o.b-p.b);
int ina=1,inb=1;
if(oapa+oapb>u2)ina=0;
if(obpa+obpb>u2)inb=0;
}
*/
int main(){
inputFunc();FILE*fi=fopen("laser.out","w");
int k=0,count=0;
for(int i=0;i<n;i++)if(sw[i])count++;fprintf(fi,"%d\n",count);
for(int i=0;i<n;i++){
makeGap(i,k++);
if(sw[i])fprintf(fi,"%.6f\n",(vec[i].a+vec[i].b)/2);
}
return 0;
}