Pagini recente » Cod sursa (job #120899) | Cod sursa (job #180790) | Cod sursa (job #1006550) | Cod sursa (job #211568) | Cod sursa (job #146247)
Cod sursa(job #146247)
#include<stdio.h>
struct patrate {float a,b;};
patrate v[1006],aux;
float mijx,solx,soly,mijy,x,y;
int ok,n,i,j,nr;
int caut (float a,float b){
int p,u,mij;
p=1;
u=n;
while(p<=u){
mij=(p+u)/2;
if( a<=v[mij].a|| ( (v[mij].a-a>=0&&v[mij].a-a<=0.00001) || (a-v[mij].a<=0&&a-v[mij].a>=-0.00001 ) ))
u=mij-1;
else p=mij+1;
}
if( ( v[p].a-a>=0&&v[p].a-a<=0.00001 ) || ( a-v[p].a<=0&&a-v[p].a>=-0.00001 ) ){
i=p;
while( ( v[i].a-a>=0&&v[i].a-a<=0.00001 ) || ( a-v[i].a<=0&&a-v[i].a>=-0.00001 ) ){
if(( v[i].b-b>=0&&v[i].b-b<=0.00001 ) || ( b-v[i].b<=0&&b-v[i].b>=-0.00001 ) ){
break;
}
i++;
}
if(( v[i].b-b>=0&&v[i].b-b<=0.00001 ) || ( b-v[i].b<=0&&b-v[i].b>=-0.00001 ) )
return 1;
}
return 0;
}
int main(){
FILE *f=fopen("patrate3.in","r");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%f",&v[i].a);
fscanf(f,"%f",&mijy);
v[i].b=mijy;
}
fclose(f);
ok=1;
while(ok){
ok=0;
for(i=1;i<n;i++){
if(v[i].a>v[i+1].a){
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
ok=1;
}
/* else{
if(v[i].a==v[i+1].a){
if(v[i].b>v[i+1].b){
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
ok=1;
}
}
}*/
}
n--;
}
for(i=n;i>1;i--){
for(j=i-1;j>=1;j--){
//if(v[i].a<v[j].b){
if(v[i].b<v[j].b||( v[i].b-v[j].b>=0&&v[i].b-v[j].b<=0.00001 ) || ( v[j].b-v[i].b<=0&&v[j].b-v[i].b>=-0.00001 )){
mijx=-((v[i].a-v[j].a)/2)+v[i].a;
mijy=((v[j].b-v[i].b)/2)+v[i].b;
x=-mijx+v[i].a;
y=mijy-v[i].b;
solx=mijx+y;
soly=mijy+x;
if(caut(solx,soly)){
solx=mijx-y;
soly=mijy-x;
if(caut(solx,soly))nr++;
}
}
else{
}
// }
/* else{
if(v[i].b<v[j].b){
}
else{
}
}*/
}
}
FILE *g=fopen("patrate3.out","w");
fprintf(g,"%d",nr);
fclose(g);
return 0;
}