Cod sursa(job #2977280)

Utilizator gabriel.9619Gabriel Stefan Tita gabriel.9619 Data 11 februarie 2023 11:01:11
Problema Oite Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.83 kb
#include <fstream>
#define mod 987654
#include <vector>
#include <algorithm>
#include <utility>
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");

int v[1025];
vector<pair<int, int>> l[mod];
vector <pair<int, int>>::iterator it;

int main()
{
    int n, s, i, j;
    fin>>n>>s;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    sort(v+1, v+n+1);
    int sol=0;
    for(i=1;i<n;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            if(l-v[i]-v[j]<0)
            {
                continue;
            }
            else
            {
                int ok=0;
                int sum=s-v[i]-v[j];
                int index=sum%mod;
                for(it=l[index].begin();it!=l[index].end();)
                {
                    if(it->first==sum)
                    {
                        ok=1;
                        break;
                    }
                }
                if(ok==0)
                {
                    it=l[index].end();
                }
                if(it!=l[index].end())
                {
                    sol+=it->second;
                }
            }
        }
        for(j=1;j<i;j++)
        {
            int ok=0;
            int sum=v[i]+v[j];
            int index=sum%mod;
            for(it=l[index].begin();it!=l[index].end();)
            {
                if(it->first==sum)
                {
                    ok=1;
                    break;
                }
            }
            if(ok==0)
            {
                it=l[index].end();
            }
            if(it!=l[index].end())
            {
                it->second++;
            }
            else
            {
                l[index].push_back({sum, 1});
            }
        }
    }
    fout<<sol;
    return 0;
}