Pagini recente » Cod sursa (job #384206) | Cod sursa (job #2498516) | Cod sursa (job #2846719) | Cod sursa (job #1824604) | Cod sursa (job #1512139)
#include<iostream>
#include<fstream>
#include<vector>
#define mod 666013
using namespace std;
int l,n;
struct str
{
int oita1,oita2,sum;
str(int xx=0,int yy=0, int ss=0)
{
oita1=xx;
oita2=yy;
sum=ss;
}
};
vector<str> v[1024*1024/2+3];
bool find(str x)
{
int i;
int q=(l-x.sum)%mod;
for(i=0;i<v[q].size();i++)
{
//if(v[q][i].oita1!=x.oita1&&v[q][i].oita2!=x.oita2&&v[q][i].sum==l-x.sum&&v[q][i].oita1!=x.oita2&&v[q][i].oita2!=x.oita1){
if(v[q][i].oita1<x.oita1&&v[q][i].oita2<x.oita1&&v[q][i].sum==l-x.sum){
// cout<<v[q][i].oita1<<" "<<v[q][i].oita2<<" "<<v[q][i].sum<<" "<<x.oita1<<" "<<x.oita2<<" "<<x.sum<<"\n";
return 1;
}
}
return 0;
}
void add(str x)
{
int q=x.sum%mod;
v[q].push_back(x);
}
int a[1400];
int main()
{
int i,sol=0;
ifstream cin("oite.in");
ofstream cout("oite.out");
cin>>n>>l;
sol=0;
for(i=1;i<=n;i++)
{
cin>>a[i];
for(int j=1;j<i;j++){
if(a[i]+a[j]<=l)
sol+=find(str(j,i,a[i]+a[j]));
add(str(j,i,a[i]+a[j]));
}
}
cout<<sol;
return 0;
}