Cod sursa(job #2406196)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 15 aprilie 2019 14:49:48
Problema Oite Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
int n, s, v[2002];
int ap[2002];
vector<pair<int, int> >a[100002];
void add(int ss)
{
    int rest = ss % 100000;
    for(int j = 0; j < a[rest].size(); ++j)
        if(a[rest][j].first == ss)
        {
            a[rest][j].second++;
            return;
        }
    a[rest].push_back({ss, 1});
}
int fnd(int ss)
{
    int rest = ss % 100000;
    for(int j = 0; j < a[rest].size(); ++j)
        if(a[rest][j].first == ss)
            return a[rest][j].second;
    return 0;
}
int main()
{
    f >> n >> s;
    for(int i = 1; i <= n; ++i)
        f >> v[i];
    long long aa = 0;
    for(int i = 2; i <= n; ++i)
    {
        for(int j = i+1; j <= n; ++j)
            if(s - v[i] - v[j] >= 0)
                aa += fnd(s - v[i] - v[j]);
        for(int j = i-1; j >= 1; --j)
            if(v[i] + v[j] <= s)
                add(v[i] + v[j]);
    }
    g << aa;
    return 0;
}