Cod sursa(job #37807)

Utilizator mastermageSchneider Stefan mastermage Data 25 martie 2007 12:41:00
Problema Laser Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasele 11-12 Marime 1.43 kb
#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;
}