Cod sursa(job #2699929)

Utilizator As932Stanciu Andreea As932 Data 26 ianuarie 2021 10:51:46
Problema Oite Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
#include <vector>
#define per pair<long long, int>
#define sm first
#define nrv second
using namespace std;

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

typedef long long ll;

const int cmax = 1025;
const int mod = 500009;

int c, rsp, o[cmax];
ll l;
vector <per> v[mod + 1];

void read(){
    cin >> c >> l;

    for(int i = 1; i <= c; i++)
        cin >> o[i];
}

void ans(){
    for(int i = 1; i < c; i++){
        for(int j = i + 1; j <= c; j++){
            ll nr = l - o[i] - o[j];

            if(nr < 0)
                continue;

            for(int q = 0; q < v[nr % mod].size(); q++)
                if(v[nr % mod][q].sm == nr){
                    rsp += v[nr % mod][q].nrv;
                    break;
                }
        }

        for(int j = 1; j < i; j++){
            ll nr = o[i] + o[j];

            bool exists = false;

            for(int q = 0; q < v[nr % mod].size(); q++)
                if(v[nr % mod][q].sm == nr){
                    v[nr % mod][q].nrv++;
                    exists = true;
                    break;
                }

            if(!exists)
                v[nr % mod].push_back({nr, 1});
        }
    }

    cout << rsp;
}

int main()
{
    read();
    ans();

    return 0;
}