Pagini recente » Cod sursa (job #1128085) | Cod sursa (job #166671) | Cod sursa (job #2543145) | Cod sursa (job #248866) | Cod sursa (job #3040043)
#include <bits/stdc++.h>
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
int n,m;
long long nr;
int p;
struct hashh
{
vector<int>a,nr;
}h[366019];
int v[1027];
int esteDeja(int val)
{
int k=val%p;
int i,z=h[k].a.size();
for(i=0;i<z;i++)
if(h[k].a[i]==val)
return i;
return -1;
}
void hashAdd(int val)
{
int j=esteDeja(val),k=val%p;
if(j==-1)
{
h[k].a.push_back(val);
h[k].nr.push_back(1);
}
else
h[k].nr[j]++;
}
void sterge(int val)
{
int k=val%p;
int i,z=h[k].a.size();
for(i=0;i<z;i++)
if(h[k].a[i]==val)
{
if(h[k].nr[i]>1)
h[k].nr[i]--;
else
{
h[k].a.erase(h[k].a.begin()+i);
h[k].a.erase(h[k].nr.begin()+i);
}
return;
}
}
int cb(int st,int dr,int val)
{
int mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]==val)
return mij;
if(v[mij]<val)
st=mij+1;
else
dr=mij-1;
}
return st;
}
int main()
{
int t,i,j,x,m,M,st,dr,k,z,val;
f>>n>>val;
for(i=1;i<=n;i++)
f>>v[i];
sort(v+1,v+n+1);
for(i=1;i<n;i++)
for(j=i+1;j<n;j++)
if(v[i]+v[j]<val)
{
for(k=j+1;k<n;k++)
{
z=v[i]+v[j]+v[k];
if(z<val)
{
t=cb(k+1,n,val-z);
if(t>0 and v[t]==val-z)
{
nr++;
//g<<i<<" "<<j<<" "<<k<<" "<<t<<'\n';
}
}
else
break;
}
}
// else
// break;
g<<nr;
return 0;
}