Pagini recente » Cod sursa (job #2864933) | Cod sursa (job #2479680) | Cod sursa (job #1304537) | Cod sursa (job #394442) | Cod sursa (job #1715291)
# include <fstream>
# include <vector>
# define DIM 1034
# define MOD 1000010
# 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%MOD;
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=q-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;
}