Pagini recente » Cod sursa (job #1023104) | Cod sursa (job #1275507) | Cod sursa (job #1559485) | Cod sursa (job #1303657) | Cod sursa (job #1323242)
#include <fstream>
#include <vector>
#define DIM 1031
#define ct 50011
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
int n;
long long L,sol;
long long v[DIM];
vector<pair<int,int> > H[ct];
long long query(int x){
int q=x%ct;
vector<pair<int,int> >::iterator it;
for(it=H[q].begin();it!=H[q].end();it++){
if(it->first==x)
return it->second;
}
return 0;
}
void adauga(int x){
int q=x%ct;
vector<pair<int,int> >::iterator it;
for(it=H[q].begin();it!=H[q].end();it++){
if(it->first==x){
it->second++;
return;
}
}
H[q].push_back(make_pair(x,1));
}
int main(void){
register int i,j;
f>>n>>L;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<n;i++){
for(j=1+i;j<=n;j++)
if(L>=v[i]+v[j])
sol+=query(L-v[i]-v[j]);
for(j=1;j<i;j++){
adauga(v[i]+v[j]);
}
}
g<<sol;
return 0;
}