Pagini recente » Cod sursa (job #1980747) | Cod sursa (job #1482806) | Cod sursa (job #469918) | Cod sursa (job #2551503) | Cod sursa (job #2204209)
#include <fstream>
#include <vector>
#define DIM 1030
#define MOD 666013
using namespace std;
ifstream in ("oite.in");
ofstream out("oite.out");
int n, s, oaie[DIM];
long long mods;
vector<pair<int, int> > Hash[MOD + 10];
int main(int argc, const char * argv[]) {
in>>n>>s;
for(int i = 1; i <= n; ++ i)
in>>oaie[i];
for(int i = 1; i <= n; ++ i){
for(int j = i + 1; j <= n; ++ j){
int sCurr = s - oaie[i] - oaie[j];
if(sCurr > 0 && Hash[sCurr % MOD].size()){
for(auto it : Hash[sCurr % MOD]){
if(it.first == sCurr)
mods += it.second;
}
}
}
for(int j = 1; j < i; ++ j){
int sCurr = oaie[i] + oaie[j];
int ok = 0;
if(sCurr > 0 && Hash[sCurr % MOD].size()){
for(int i = 0; i < Hash[sCurr % MOD].size(); ++ i){
if(Hash[sCurr % MOD][i].first == sCurr){
++ Hash[sCurr % MOD][i].second;
ok = 1;
}
}
}
if(!ok)
Hash[sCurr % MOD].push_back({sCurr, 1});
}
}
out<<mods;
return 0;
}