Cod sursa(job #2398840)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 6 aprilie 2019 11:39:48
Problema Oite Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

ofstream out("oite.out");

class InParser 
{
private:
	FILE *fin;
	
	char *buff;
	
	int sp;
	
	char read_ch() 
	{
		sp++;
	
		if(sp == 4096) 
		{
			sp = 0;
			fread(buff, 1, 4096, fin);
		}
	
		return buff[sp];
	}

public:
	InParser(const char* nume) 
	{
		fin = fopen(nume, "r");
	
		buff = new char[4096]();
		sp = 4095;
	}
	
	InParser& operator >> (int &n) 
	{
		char c;
	
		while(!isdigit(c = read_ch()) && c != '-');
		
		n = c - '0';
		
		while(isdigit(c = read_ch())) 
			n = 10 * n + c - '0';
	
		return *this;
	}
};

const int DIM = 1025;

unordered_map <int, int> H;

int v[DIM];

int n, m;
int ans;

int i, j;

int main()
{
	InParser in("oite.in");
	
	in >> n >> m;
	
	for(i = 1; i <= n; i++)
		in >> v[i];
	
	sort(v + 1, v + 1 + n);

	for(i = 2; i < n; i++)
	{
		for(j = i + 1; j <= n; j++)
			ans += H[m - (v[i] + v[j])];
		
		for(j = 1; j < i; j++)
			H[v[i] + v[j]]++;
	}
	
	out << ans;
}