Pagini recente » Cod sursa (job #2580494) | Cod sursa (job #163174) | Cod sursa (job #2331327) | Cod sursa (job #1482185) | Cod sursa (job #2524601)
#include <fstream>
#include <vector>
#define MOD 100007
#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[100010];
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++){
if(L-v[i]-v[j]<0)
continue;
for(int k=0;k<f[(L-(v[i]+v[j]))%MOD].size();k++)
if(f[(L-(v[i]+v[j]))%MOD][k].X==L-(v[i]+v[j])){
sol+=f[(L-(v[i]+v[j]))%MOD][k].Y;
break;
}
}
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++)
if(f[(v[t]+v[i])%MOD][k].X==v[t]+v[i]){
f[(v[t]+v[i])%MOD][k].Y++;
break;
}
}
fout<<sol;
return 0;
}