Pagini recente » Cod sursa (job #1446518) | Cod sursa (job #2297573) | Cod sursa (job #1852168) | Cod sursa (job #2384694) | Cod sursa (job #1715286)
# include <fstream>
# include <vector>
# define DIM 1034
# define MOD 3000010
# 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;
long long sol;
int main () {
fin>>n>>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++){
a=(v[i]+v[j])%MOD;
b=val%MOD-a;
if(b>=MOD)
b-=MOD;
if(b<0)
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;
}
}
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;
}
}
if(poz==-1)
Rest[a].push_back(make_pair(v[i]+v[j],1));
}
}
fout<<sol<<"\n";
return 0;
}