Cod sursa(job #2846315)

Utilizator AswVwsACamburu Luca AswVwsA Data 9 februarie 2022 09:37:28
Problema Oite Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb

#include <fstream>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;

const int NMAX = 1024, BIG = 1048576;
int v[NMAX + 3];

unordered_map <int, vector <pair <int, int> > > m;
unordered_map <int, vector <pair <int, int> > > :: iterator it, it2;

inline bool check (pair <int, int> a, pair <int, int> b)
{
    return !(a.first == b.first or a.first == b.second or a.second == b.first or a.second == b.second);
}
int main()
{
    ifstream cin("oite.in");
    ofstream cout("oite.out");
    int n, s, i, j;
    cin >> n >> s;
    for (i = 1; i <= n; i++)
        cin >> v[i];
    int ans = 0;
    for (i = 1; i + 1 <= n; i++)
        for (j = i + 1; j <= n; j++)
        {
            m[v[i] + v[j]].push_back({i, j});
            int need = s - v[i] - v[j];
            it = m.find(need);
            if (it == m.end())
                continue;
            for (int k = 0; k < it->second.size(); k++)
                if (it->second[k].second < i)
                    ans++;

        }
    cout << ans;
}