Pagini recente » Cod sursa (job #1999506) | Cod sursa (job #1480299) | Cod sursa (job #745889) | Cod sursa (job #1702629) | Cod sursa (job #529842)
Cod sursa(job #529842)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
const char iname[] = "oite.in";
const char oname[] = "oite.out";
const int nmax = 1050;
const int mod = 366013;
using namespace std;
ifstream fin(iname);
ofstream fout(oname);
int c, buildsum, i, j, k;
int oaie[nmax];
vector<pair < int, pair <int, int> > > H[366115];
long long sol, ceva;
int main()
{
fin >> c >> buildsum;
for(i = 1; i <= c; i ++)
fin >> oaie[i];
sort(oaie + 1, oaie + c + 1);
for(i = 1; i <= c; i ++)
for(j = i + 1; j <= c; j ++)
H[(oaie[i] + oaie[j]) % mod].push_back(make_pair(oaie[i] + oaie[j], make_pair(i, j)));
for(i = 1; i < c && buildsum - oaie[i] - oaie[i + 1] >= 0 ; i ++)
for(j = i + 1; j <= c && buildsum - oaie[i] - oaie[j] >= 0; j ++)
if(buildsum - oaie[i] - oaie[j] >= 0)
{
ceva = (buildsum - oaie[i] - oaie[j]) % mod;
for(k = 0; k < H[ceva].size(); k++)
if(H[ceva][k].first == buildsum - oaie[i] - oaie[j] && i != H[ceva][k].second.first && i != H[ceva][k].second.second && j != H[ceva][k].second.first && j != H[ceva][k].second.second)
if(j < min(H[ceva][k].second.first, H[ceva][k].second.second))
++sol;
}
fout << sol;
return 0;
}