Pagini recente » Cod sursa (job #56952) | Monitorul de evaluare | Cod sursa (job #1743952) | Cod sursa (job #1075843) | Cod sursa (job #529614)
Cod sursa(job #529614)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const char iname[] = "oite.in";
const char oname[] = "oite.out";
const int nmax = 1050;
const int mod = 666013;
using namespace std;
ifstream fin(iname);
ofstream fout(oname);
int c, buildsum, i, j, k;
int oaie[nmax];
vector<pair <int, int> > H[666013];
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(i, j));
for(i = 1; i < c && buildsum - oaie[i] - oaie[j] >= 0 ; i ++)
for(j = i + 1; j <= c; j ++)
if(buildsum - oaie[i] - oaie[j] >= 0)
{
ceva = buildsum - oaie[i] - oaie[j];
for(k = 0; k < H[ceva % mod].size(); k++)
if(i < H[ceva % mod][k].first && H[ceva % mod][k].second < j )
++sol;
}
fout << sol;
return 0;
}