Cod sursa(job #2974647)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 4 februarie 2023 12:20:04
Problema Oite Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <vector>
#include <set>
#define mod 999997
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");


int n;
long long l;


int v[1100];

vector < pair <int,int > > s[mod+3];

int main()
{
    fin>>n>>l;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    int sol=0;
    for(int i=1;i<n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            int val = l-v[i]-v[j];
            int vm = val%mod;
            if(val<0)
                continue;
            for(int x=0;x<s[vm].size();x++)
            {
                if(s[vm][x].first==val)
                {
                    sol+=s[vm][x].second;
                }
            }
        }
        for(int j=1;j<i;j++)
        {
             int val = v[i]+v[j];
             int vm = val%mod;
             bool ok =false;
             for(int x=0;x<s[vm].size();x++)
             {
                 if(s[vm][x].first==val)
                 {
                     ok=true;
                     s[vm][x].second++;
                     break;
                 }
             }
             if(!ok)
             {
                 s[vm].push_back({val,1});
             }
        }

    }
    fout<<sol;
}