Pagini recente » Cod sursa (job #669344) | Cod sursa (job #997789) | Cod sursa (job #2292247) | Cod sursa (job #643003) | Cod sursa (job #1710644)
/*************************************************************\
~*********************ENJOY THE SILENCE***********************~
\*************************************************************/
#include <bits/stdc++.h>
using namespace std;
/*******************Debugging defines*************************/
#define ok_dump() cerr<<"OK\n"
#define var_dump(x) cerr<<#x": "<<x<<'\n'
#define arr_dump(x, n) {cerr<<#x"[]: ";\
for(int _=0;_<n;++_) cerr<<x[_]<<" ";cerr<<'\n';}
/*************************************************************/
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5205;
int V[MAXN];
struct cmp {
bool operator() (const int &a, const int &b) const {
return make_pair(V[a], a) < make_pair(V[b], b);
}
};
multiset<int, cmp> Set[5];
int Total[5];
int k;
void Insert(int val, int to) {
Set[to].insert(val);
Total[to] += V[val];
}
void Erase(int val, int to) {
Set[to].erase(val);
Total[to] -= V[val];
}
int getMin() {
int ret = 0;
for(int i = 1; i < k; ++i)
if(Total[ret] > Total[i])
ret = i;
return ret;
}
int getMax() {
int ret = 0;
for(int i = 1; i < k; ++i)
if(Total[ret] < Total[i])
ret = i;
return ret;
}
int main() {
ifstream fin("sate2.in");
ofstream fout("sate2.out");
int t, n, m;
fin >> t;
while(t--) {
fin >> n >> m >> k;
bool bad = false;
for(int i = 1; i <= n; ++i) {
fin >> V[i];
}
for(int i = 0; i < k; ++i) {
Set[i].clear();
Total[i] = 0;
}
sort(V + 1, V + n + 1);
if(m % k || V[n] > m / k) {
fout << "NU\n";
continue;
}
for(int i = n; i >= 1; --i) {
int bi = getMin();
Insert(i, bi);
}
int step = 0;
while(true) {
if(++step >= 500000) {
fout << "NU\n";
break;
}
int bi = getMin();
int bj = getMax();
if(Total[bi] == Total[bj]) {
fout << "DA\n";
break;
}
// Torn din bi in bj
int need = m / k - Total[bi];
V[0] = rand() % need;
auto it = Set[bi].lower_bound(0);
Insert(*it, bi);
Erase(*it, bj);
}
}
return 0;
}
/*************************************************************\
~*********************ENJOY THE SILENCE***********************~
\*************************************************************/