Pagini recente » Cod sursa (job #100716) | Cod sursa (job #1464340) | Cod sursa (job #814161) | Cod sursa (job #1215682) | Cod sursa (job #3124771)
//sursa harsan razvan
#include <stdio.h>
#define MAXN 1000
#define PREC 10000
#define MOD 9991
int x[MAXN], y[MAXN], hashx[MAXN], hashy[MAXN], next[MAXN], ult[MOD], dr = 0;
inline void add(int x, int y) {
int hv = (x + y) % MOD;
hashx[dr] = x;
hashy[dr] = y;
next[dr] = ult[hv];
ult[hv] = dr;
dr++;
}
inline char bun(int x, int y) {
int hv = (x + y) % MOD, poz;
poz = ult[hv];
while(poz > -1 && !(hashx[poz] == x && hashy[poz] == y))
poz = next[poz];
if(poz != -1)
return 1;
return 0;
}
inline int getnum(FILE *in) {
char ch;
int rez = 0, minus;
minus = 1;
ch = fgetc(in);
if(ch == '-'){
minus = -1;
ch = fgetc(in);
}
while(ch >= '0' && ch <= '9'){
rez *= 10;
rez += ch - '0';
ch = fgetc(in);
}
ch = fgetc(in);
while(ch >= '0' && ch <= '9'){
rez *= 10;
rez += ch - '0';
ch = fgetc(in);
}
return rez * minus;
}
int main() {
FILE *in = fopen("patrate3.in", "r");
int n, i, j;
for(i = 0; i < MOD; i++)
ult[i] = -1;
fscanf(in, "%d ", &n);
for(i = 0; i < n; i++){
x[i] = getnum(in);
y[i] = getnum(in);
add(x[i], y[i]);
}
fclose(in);
int rez = 0;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
if(y[j] > y[i] && x[j] >= x[i]){
if(bun(x[j] + (y[j] - y[i]), y[j] - (x[j] - x[i])) && bun(x[i] + (y[j] - y[i]), y[i] - (x[j] - x[i])))
rez++;
}
}
}
FILE *out = fopen("patrate3.out", "w");
fprintf(out, "%d", rez);
fclose(out);
return 0;
}