Cod sursa(job #850056)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 7 ianuarie 2013 23:06:03
Problema Oite Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <tr1/unordered_map>

using namespace std;

ifstream in ("oite.in");
ofstream out ("oite.out");

int V[1030];
tr1 :: unordered_map < int, vector < pair <int, int> > > M;
vector < pair < int, int > > :: iterator it;

bool ok (int i, int j, int k, int l)
{
    if (k < i || k < j || l < i || l < j)
        return 0;

    if (i == j || i == k || i == l)
        return 0;

    if (j == k || j == l)
        return 0;

    if (k == l)
        return 0;

    return 1;
}

int main ()
{
	int N, S, i, j, Ans = 0, now;

	in >> N >> S;

	for (i = 1; i <= N; i ++)
		in >> V[i];

    for (i = 1; i <= N; i ++)
        for (j = i + 1; j <= N; j ++)
            M[ V[i] + V[j] ].push_back (make_pair (i, j));

    for (i = 1; i <= N; i ++)
        for (j = i + 1; j <= N; j ++){
            now = S - V[i] - V[j];

            for (it = M[now].begin (); it != M[now].end (); ++ it)
                if ((it -> first) > j)
                    Ans ++;
        }

    out << Ans;

    return 0;
}