Pagini recente » Cod sursa (job #3157755) | Cod sursa (job #369628) | Cod sursa (job #1247685) | Cod sursa (job #734374) | Cod sursa (job #1715301)
# include <fstream>
# include <vector>
# define DIM 1034
# define MOD 5000010
# define f first
# define s second
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
vector <pair<int,int> > Rest[MOD+5];
int v[DIM],n,val,i,j,r,a,b,poz,q;
long long sol;
int main () {
fin>>n>>val;
q=val;
for(i=1;i<=n;i++)
fin>>v[i];
Rest[(v[1]+v[2])%MOD].push_back(make_pair(v[1]+v[2],1));
for(i=3;i<=n-1;i++){
for(j=i+1;j<=n;j++){
b=val - v[i] - v[j];
if(b<0) {
b+=MOD;
continue;
}
b %= MOD;
for(r=0;r<Rest[b].size();r++){
if(v[i]+v[j]+Rest[b][r].f==val) {
sol+=Rest[b][r].s;
break;
}
}
}
for(j=i-1;j>=1;j--){
a=(v[i]+v[j])%MOD;
poz=-1;
for(r=0;r<Rest[a].size();r++){
if(Rest[a][r].f==v[i]+v[j]){
Rest[a][r].s++;
poz=r;
break;
}
}
if(poz==-1)
Rest[a].push_back(make_pair(v[i]+v[j],1));
}
}
fout<<sol<<"\n";
return 0;
}