Pagini recente » Cod sursa (job #2582136) | Cod sursa (job #983373) | Cod sursa (job #1775407) | Cod sursa (job #356001) | Cod sursa (job #1314079)
#include <fstream>
#include <vector>
#define DIM 1000005
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
vector <pair <int, int> > H[DIM];
vector <int> v(DIM);
int L,N,S,nr;
int main(){
fin>>N>>L;
for(int i=1;i<=N;i++)
fin>>v[i];
for(int i=1;i<N;i++){
for(int j=i+1;j<=N;j++){
S=L-v[i]-v[j];
for(std::vector <pair <int ,int > >::iterator it=H[S%DIM].begin();it!=H[S%DIM].end() && S>=0;it++)
if(it->first==S){
nr+=it->second;
}
}
for(int j=1;j<i;j++){
S=v[i]+v[j];
if(v[i]+v[j]>L)
continue;
std::vector <pair <int ,int > >::iterator it;
for(it=H[S%DIM].begin();it!=H[S%DIM].end();it++)
if(it->first==S){
it->second++;
break;
}
if(it==H[S%DIM].end())
H[S%DIM].push_back(make_pair(S,1));
}
}
fout<<nr;
fin.close();fout.close();
return 0;
}