Pagini recente » Cod sursa (job #1165760) | Cod sursa (job #2075830) | Cod sursa (job #1186113) | Cod sursa (job #132959) | Cod sursa (job #1785678)
#include <fstream>
#include <vector>
#include <iostream>
#define DIM 1028
#define M 825991
#define ll long long
#define f first
#define s second
using namespace std;
int c,v[DIM];
ll ans,l;
vector<pair<ll,pair<int,int> > > h[M];
bool isCollision(pair<int,int> p1,pair<int,int> p2) {
return (p1.f>=p2.f||p1.f>=p2.s||p1.s>=p2.f||p1.s>=p2.s);
}
void countComp(ll sum,pair<int,int> p) {
if(sum<0)
return;
int i=sum%M;
for(int j=0;j<h[i].size();j++)
if(h[i][j].f==sum&&(!isCollision(p,h[i][j].s)))
ans++;
}
int main()
{
ifstream fin("oite.in");
ofstream fout("oite.out");
fin>>c>>l;
for(int i=1;i<=c;i++)
fin>>v[i];
for(int i=1;i<=c;i++)
for(int j=i+1;j<=c;j++)
h[(v[i]+v[j])%M].push_back({v[i]+v[j],{i,j}});
for(int i=0;i<M;i++)
for(int j=0;j<h[i].size();j++) {
countComp(l-h[i][j].f,h[i][j].s);
swap(h[i][j],h[i][h[i].size()-1]);
h[i].erase(h[i].begin()+h[i].size()-1);
}
fout<<ans;
return 0;
}