Cod sursa(job #768794)

Utilizator cvicentiuCiorbaru Vicentiu Marian cvicentiu Data 17 iulie 2012 18:15:12
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <vector>
#include <algorithm>
#define MAXOI 1025
#define MAXH 10007

using namespace std;


int main() {
	int C, L;
	int oi[MAXOI];
	int result = 0;
	
	vector<int> hash[MAXH];

	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]);
	}
	

	for (int i = 0; i < C; i++) {
		for (int j = i + 1; j < C; j++) {
			int sum = oi[i] + oi[j];
			if (L - sum > 0) {
				int poz = (L - sum) % MAXH;
				for (int i = 0; i < (int) hash[poz].size(); i++) {
					if (hash[poz][i] == L - sum) {
						result ++;
					}
				}
			}
		}
		for (int j = 0; j < i; j++) {
			hash[(oi[i] + oi[j]) % MAXH].push_back(oi[i] + oi[j]);
		}
	}
	
	fprintf(g, "%d", result);

	fclose(f);
	fclose(g);


}