Cod sursa(job #2571331)

Utilizator betybety bety bety Data 4 martie 2020 22:21:45
Problema Oite Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>

#define MOD 100003



using namespace std;



ifstream fin  ("oite.in");

ofstream fout ("oite.out");



int n, s, S, sol, q;

int v[1005];



vector <pair <int, int> > hes[MOD];



int main(){

    fin >> n >> S;

    for (int i=1; i<=n; i++){

        fin >> v[i];

    }

    for (int t=1; t<n; t++){

        for (int p=t+1; p<=n; p++){

            s = S - v[t] - v[p];

            if (s < 0)

                continue;

            for (q=0; q<hes[s%MOD].size(); q++){

                if (hes[s%MOD][q].first == s){

                    sol += hes[s%MOD][q].second;

                    break;

                }

            }

        }

        for (int p=1; p<t; p++){

            s = v[t] + v[p];

            if (S < s)

                continue;

            for (q=0; q<hes[s%MOD].size(); q++){

                if (hes[s%MOD][q].first == s){

                    hes[s%MOD][q].second++;

                    break;

                }

            }

            if (q == hes[s%MOD].size()){

                hes[s%MOD].push_back ({s, 1});

            }

        }

    }

    fout << sol;

    return 0;

}