Pagini recente » Cod sursa (job #691875) | Cod sursa (job #1940698) | Cod sursa (job #1960914) | Cod sursa (job #877629) | Cod sursa (job #2406196)
#include<bits/stdc++.h>
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
int n, s, v[2002];
int ap[2002];
vector<pair<int, int> >a[100002];
void add(int ss)
{
int rest = ss % 100000;
for(int j = 0; j < a[rest].size(); ++j)
if(a[rest][j].first == ss)
{
a[rest][j].second++;
return;
}
a[rest].push_back({ss, 1});
}
int fnd(int ss)
{
int rest = ss % 100000;
for(int j = 0; j < a[rest].size(); ++j)
if(a[rest][j].first == ss)
return a[rest][j].second;
return 0;
}
int main()
{
f >> n >> s;
for(int i = 1; i <= n; ++i)
f >> v[i];
long long aa = 0;
for(int i = 2; i <= n; ++i)
{
for(int j = i+1; j <= n; ++j)
if(s - v[i] - v[j] >= 0)
aa += fnd(s - v[i] - v[j]);
for(int j = i-1; j >= 1; --j)
if(v[i] + v[j] <= s)
add(v[i] + v[j]);
}
g << aa;
return 0;
}