Pagini recente » Cod sursa (job #3202142) | Cod sursa (job #946408) | Cod sursa (job #1942660) | Cod sursa (job #1506955) | Cod sursa (job #768755)
Cod sursa(job #768755)
#include <stdio.h>
#include <vector>
#include <list>
#define MAXOI 2000
#define MAXH 6663
struct grupare {
int a, b;
int sum;
};
using namespace std;
int contains(vector<list<int> > &hash, int x) {
list<int>::iterator it;
int result = 0;
int mod = x % MAXH;
for (it = hash[mod].begin(); it != hash[mod].end(); it++) {
fprintf(stderr, "%d %d\n", *it, x);
if (*it == x) {
result ++;
}
}
return result;
}
int main() {
int C, L;
int oi[MAXOI];
int result = 0;
list<int> lst;
vector<list<int> > hash(MAXH, lst);
FILE *f = fopen("oite.in", "r");
FILE *g = fopen("oite.out", "w");
fscanf(f, "%d%d", &C, &L);
for (int i = 0; i < C; i++) {
fscanf(f, "%d", &oi[i]);
}
struct grupare grupa;
for (int i = 0; i < C; i++) {
for (int j = i + 1; j < C; j++) {
hash[(oi[i] + oi[j]) % MAXH].push_back(oi[i] + oi[j]);
}
}
for (int i = 0; i < C; i++) {
for (int j = i + 1; j < C; j++) {
int sum = oi[i] + oi[j];
if (sum < L) {
result += contains(hash, L - sum);
}
}
}
fprintf(g, "%d", result);
fclose(f);
fclose(g);
}