Cod sursa(job #75878)

Utilizator wefgefAndrei Grigorean wefgef Data 6 august 2007 14:37:26
Problema Oite Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define mp make_pair
#define x first
#define y second

#define Nmax 1024


int n, s;
int Lana[Nmax];

int m;
pair<int, int> v[Nmax*Nmax/2];

int ret;


void readdata()
{
	freopen("oite.in", "r", stdin);
	freopen("oite.out", "w", stdout);

	scanf("%d %d", &n, &s);
	for (int i = 0; i < n; ++i)
		scanf("%d", &Lana[i]);
}

inline int cmp(pair<int, int> a, pair<int, int> b)
{ return Lana[a.x] + Lana[a.y] < Lana[b.x] + Lana[b.y]; }

void solve()
{
	int i, j, k;

	for (i = 0; i < n; ++i)
		for (j = i+1; j < n; ++j)
			v[m++] = mp(i, j);
	sort(v, v+m, cmp);

	return;
	for (i = 0, j = m-1; i < m && j >= 0; ++i)
	{
		for (; j >= 0 && (Lana[v[i].x] + Lana[v[i].y] + Lana[v[j].x] + Lana[v[j].y] > s); --j);
		for (k = j; k >= 0 && (Lana[v[i].x] + Lana[v[i].y] + Lana[v[k].x] + Lana[v[k].y] == s); --k)
			if (v[i].x < v[k].x && v[i].y != v[k].x && v[i].y != v[k].y) ++ret;
	}
	printf("%d\n", ret/3);
}

int main()
{
	readdata();
	solve();
	return 0;
}