Cod sursa(job #2524593)

Utilizator Raresr14Rosca Rares Raresr14 Data 15 ianuarie 2020 21:47:24
Problema Oite Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <vector>
#define MOD 1000007
#define X first
#define Y second
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
int n,i,v[1030];
vector<pair<int,int> > f[1000010];
long long sol,j,t,L;
int main(){
    fin>>n>>L;
    for(i=1;i<=n;i++)
        fin>>v[i];
    f[(v[1]+v[2])%MOD].push_back({v[1]+v[2],1});
    for(i=3;i<n;i++){
        for(j=i+1;j<=n;j++){
            for(int k=0;k<f[(L-(v[i]+v[j]))%MOD].size();k++)
                sol+=f[(L-(v[i]+v[j]))%MOD][k].Y;
        }
         for(t=1;t<i;t++)
            if(!f[(v[t]+v[i])%MOD].size())
                 f[(v[t]+v[i])%MOD].push_back({v[t]+v[i],1});
            else
                for(int k=0;k<f[(v[t]+v[i])%MOD].size();k++)
                    f[(v[t]+v[i])%MOD][k].Y++;
    }
    fout<<sol;
    return 0;
}