Pagini recente » Cod sursa (job #423550) | Cod sursa (job #850135) | Cod sursa (job #2568925) | Cod sursa (job #1934880) | Cod sursa (job #1938995)
#include <fstream>
#include <vector>
#define DIM 500010
using namespace std;
int n,S,i,v[1027],x,y,j,k,nr,ok;
long long sol;
vector < pair<int,int> > H[DIM+3];
ifstream fin ("oite.in");
ofstream fout ("oite.out");
int main (){
fin>>n>>S;
for (i=1;i<=n;i++)
fin>>v[i];
// pun in multime pe v[1] + v[2]
H[(v[1]+v[2])%DIM].push_back (make_pair(v[1]+v[2],1));
//H2[(v[1]+v[2])%DIM][0].push_back (1); // aparitiile
for (i=3;i<n;i++){
for (j=i+1;j<=n;j++){
// verificam daca apare s-(v[i] + v[j]) in multime
x = S-(v[i] + v[j]);
y = H[x%DIM].size ();
nr = 0;
for (k=0;k<y;k++){
if (H[x%DIM][k].first == x){
sol += H[x%DIM][k].second;
//break;
}
}
}
for (j=i-1;j>=1;j--){
// introducem pe v[i] + v[j] in multime
x = v[i] + v[j];
y = H[x%DIM].size ();
ok = 0;
for (k=0;k<y;k++){
if (H[x][k].first == x){
H[x][k].second ++;
ok = 1;
break;
}
}
if (ok == 0)
H[x%DIM].push_back (make_pair(x,1));
}
}
fout<<sol;
return 0;
}