Pagini recente » Cod sursa (job #1312165) | Cod sursa (job #2815110) | Cod sursa (job #2807246) | Cod sursa (job #1744920) | Cod sursa (job #2523425)
#include <fstream>
#include <vector>
#define x first
#define y second
#define dim 1000001
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
int n,i,j,k,v[1100],l,sum,lung;
vector <pair <int,int> > h[dim];
int sol;
int main(){
fin>>n>>l;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=2;i<n;i++){
///caut
for(j=i+1;j<=n;j++){
sum=l-v[i]-v[j];
if(sum<0)
continue;
lung=h[sum%dim].size();
for(k=0;k<lung;k++)
if(h[sum%dim][k].x == sum){
sol+=h[sum%dim][k].y;
break;
}
}
///adaug
for(j=1;j<i;j++){
sum=v[i]+v[j];
if(sum>l)
continue;
lung=h[sum%dim].size();
for(k=0;k<lung;k++)
if(h[sum%dim][k].x == sum){
h[sum%dim][k].y++;
break;
}
if(k==lung)
h[sum%dim].push_back( make_pair(sum,1) );
}
}
fout<<sol;
return 0;
}