Pagini recente » Cod sursa (job #1531966) | Cod sursa (job #605990) | Cod sursa (job #1834245) | Cod sursa (job #2685559) | Cod sursa (job #1382818)
#include <stdio.h>
#include <ctype.h>
#define MAXN 1000
#define HASH 666013
long long val[MAXN+1], l[MAXN], c[MAXN];
int next[MAXN+1], lista[HASH+1], m;
FILE *fin;
inline int exista(long long k){
int p=lista[k%HASH], f=0;
while((p!=0)&&(f==0)){
if(val[p]==k){
f=1;
}
p=next[p];
}
return f;
}
inline void adauga(long long k){
val[++m]=k;
next[m]=lista[k%HASH];
lista[k%HASH]=m;
}
inline int citeste(){
int x=0;
char ch=fgetc(fin);
while(!isdigit(ch)){
ch=fgetc(fin);
}
while(ch!='.'){
x=x*10+ch-'0';
ch=fgetc(fin);
}
ch=fgetc(fin);
while(isdigit(ch)){
x=x*10+ch-'0';
ch=fgetc(fin);
}
return x;
}
int main(){
int n, i, j, ans;
long long a, b, x, y;
FILE *fout;
fin=fopen("patrate3.in", "r");
fout=fopen("patrate3.out", "w");
fscanf(fin, "%d ", &n);
for(i=0; i<n; i++){
l[i]=citeste();
c[i]=citeste();
adauga((l[i]<<27LL)+c[i]);
}
ans=0;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
if((i!=j)&&(c[i]<=c[j])&&(l[i]>l[j])){
a=l[i]+c[j]-c[i];
b=c[i]+l[i]-l[j];
x=l[j]+c[j]-c[i];
y=c[j]+l[i]-l[j];
ans+=(exista((a<<27LL)+b)&exista((x<<27LL)+y));
}
}
}
fprintf(fout, "%d\n", ans);
fclose(fin);
fclose(fout);
return 0;
}