#include "scales.h"
#include <bits/stdc++.h>
using namespace std;
void init(int T) {
/* ... */
}
int gH(vector<int> v, int A, int B, int C) {
--A;--B;--C;
int H = max(v[A], max(v[B], v[C]));
if(v[A]==H) return ++A;
if(v[B]==H) return ++B;
return ++C;
}
int gL(vector<int> v, int A, int B, int C) {
--A;--B;--C;
int L = min(v[A], min(v[B], v[C]));
if(v[A]==L) return ++A;
if(v[B]==L) return ++B;
return ++C;
}
int gM(vector<int> v, int A, int B, int C) {
--A;--B;--C;
int H = max(v[A], max(v[B], v[C]));
if(v[A]==H) {
if(v[B] > v[C]) return ++B;
else return ++C;
}
if(v[B]==H) {
if(v[A] > v[C]) return ++A;
else return ++C;
}
if(v[B] > v[A]) return ++B;
return ++A;
}
int gNL(vector<int> v, int A, int B, int C, int D) {
--A;--B;--C;--D;
vector<pair<int, int>> vp;
if(v[A] > v[D]) vp.push_back({v[A], A+1});
if(v[B] > v[D]) vp.push_back({v[B], B+1});
if(v[C] > v[D]) vp.push_back({v[C], C+1});
if(vp.empty()) return gL(v, ++A, ++B, ++C);
sort(vp.begin(), vp.end());
return vp[0].second;
}
int a[7];
void orderCoins() {
/* ... */
// int W[] = {1, 2, 3, 4, 5, 6};
// answer(W);
vector<vector<int>> pos;
vector<vector<int>> nextPos;
vector<int> perm = {1, 2, 3, 4, 5, 6};
do {
pos.push_back(perm);
} while(next_permutation(perm.begin(), perm.end()));
while(pos.size() > 1) {
int best = 0;
int bestVal = 1000;
for(int A = 1; A <= 6; A++) {
for(int B = A+1; B <= 6; B++) {
for(int C = B+1; C <= 6; C++) {
int cur, curVal;
cur = 1*10000 + A*1000 + B*100 + C*10 + 0*1;
memset(a, 0, sizeof(a));
for(auto v: pos)
a[gH(v, A, B, C)]++;
curVal = max(a[A], max(a[B], a[C]));
if(curVal < bestVal || (curVal==bestVal && rand()%5 == 0))
bestVal=curVal, best=cur;
cur = 2*10000 + A*1000 + B*100 + C*10 + 0*1;
memset(a, 0, sizeof(a));
for(auto v: pos)
a[gL(v, A, B, C)]++;
curVal = max(a[A], max(a[B], a[C]));
if(curVal < bestVal || (curVal==bestVal && rand()%5 == 0))
bestVal=curVal, best=cur;
cur = 3*10000 + A*1000 + B*100 + C*10 + 0*1;
memset(a, 0, sizeof(a));
for(auto v: pos)
a[gM(v, A, B, C)]++;
curVal = max(a[A], max(a[B], a[C]));
if(curVal < bestVal || (curVal==bestVal && rand()%5 == 0))
bestVal=curVal, best=cur;
for(int D = 1; D <= 6; D++)
if(D != A && D != B && D != C) {
memset(a, 0, sizeof(a));
cur = 4*10000 + A*1000 + B*100 + C*10 + D*1;
for(auto v: pos)
a[gNL(v, A, B, C, D)]++;
curVal = max(a[A], max(a[B], a[C]));
if(curVal < bestVal || (curVal==bestVal && rand()%5 == 0))
bestVal=curVal, best=cur;
}
}
}
}
// cerr << best << " " << bestVal << endl;
int t, A, B, C, D;
D = best%10; best/=10;
C = best%10; best/=10;
B = best%10; best/=10;
A = best%10; best/=10;
t = best%10; best/=10;
int val;
if(t==1) {
val = getHeaviest(A,B,C);
for(auto v: pos)
if(gH(v, A, B, C) == val)
nextPos.push_back(v);
} else if(t==2) {
val = getLightest(A,B,C);
for(auto v: pos)
if(gL(v, A, B, C) == val)
nextPos.push_back(v);
} else if(t==3) {
val = getMedian(A,B,C);
for(auto v: pos)
if(gM(v, A, B, C) == val)
nextPos.push_back(v);
} else {
val = getNextLightest(A,B,C,D);
for(auto v: pos)
if(gNL(v, A, B, C, D) == val)
nextPos.push_back(v);
}
swap(pos, nextPos);
nextPos.clear();
}
int ans[] = {0,0,0,0,0,0};
for(int i = 0; i < 6; i++) {
ans[pos[0][i]-1] = i+1;
}
answer(ans);
}
Compilation message
In file included from grader.c:2:0:
graderlib.c: In function 'void answer(int*)':
graderlib.c:53:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
if (_ghksjhdfkae19ga_ > 1)
^~
graderlib.c:56:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
for (i = 0; i < 6; i++) {
^~~
scales.cpp: In function 'void init(int)':
scales.cpp:5:15: warning: unused parameter 'T' [-Wunused-parameter]
void init(int T) {
^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
474 ms |
468 KB |
Output is partially correct |
2 |
Partially correct |
437 ms |
488 KB |
Output is partially correct |
3 |
Partially correct |
487 ms |
488 KB |
Output is partially correct |
4 |
Partially correct |
440 ms |
624 KB |
Output is partially correct |
5 |
Partially correct |
506 ms |
624 KB |
Output is partially correct |
6 |
Partially correct |
494 ms |
624 KB |
Output is partially correct |
7 |
Partially correct |
476 ms |
692 KB |
Output is partially correct |
8 |
Partially correct |
443 ms |
692 KB |
Output is partially correct |
9 |
Partially correct |
437 ms |
704 KB |
Output is partially correct |
10 |
Partially correct |
484 ms |
704 KB |
Output is partially correct |
11 |
Correct |
404 ms |
704 KB |
Output is correct |
12 |
Partially correct |
410 ms |
704 KB |
Output is partially correct |
13 |
Partially correct |
453 ms |
704 KB |
Output is partially correct |
14 |
Partially correct |
448 ms |
704 KB |
Output is partially correct |
15 |
Partially correct |
443 ms |
704 KB |
Output is partially correct |
16 |
Partially correct |
441 ms |
748 KB |
Output is partially correct |
17 |
Partially correct |
482 ms |
748 KB |
Output is partially correct |
18 |
Partially correct |
399 ms |
748 KB |
Output is partially correct |
19 |
Partially correct |
403 ms |
748 KB |
Output is partially correct |
20 |
Partially correct |
394 ms |
748 KB |
Output is partially correct |
21 |
Partially correct |
363 ms |
748 KB |
Output is partially correct |
22 |
Partially correct |
382 ms |
748 KB |
Output is partially correct |
23 |
Partially correct |
379 ms |
748 KB |
Output is partially correct |
24 |
Partially correct |
389 ms |
748 KB |
Output is partially correct |
25 |
Partially correct |
380 ms |
796 KB |
Output is partially correct |
26 |
Partially correct |
398 ms |
796 KB |
Output is partially correct |
27 |
Partially correct |
366 ms |
796 KB |
Output is partially correct |
28 |
Partially correct |
394 ms |
796 KB |
Output is partially correct |
29 |
Partially correct |
391 ms |
796 KB |
Output is partially correct |
30 |
Partially correct |
400 ms |
796 KB |
Output is partially correct |
31 |
Partially correct |
427 ms |
796 KB |
Output is partially correct |
32 |
Partially correct |
433 ms |
796 KB |
Output is partially correct |
33 |
Partially correct |
412 ms |
796 KB |
Output is partially correct |
34 |
Correct |
414 ms |
796 KB |
Output is correct |
35 |
Partially correct |
381 ms |
796 KB |
Output is partially correct |
36 |
Partially correct |
332 ms |
796 KB |
Output is partially correct |
37 |
Partially correct |
333 ms |
796 KB |
Output is partially correct |
38 |
Partially correct |
373 ms |
796 KB |
Output is partially correct |
39 |
Partially correct |
500 ms |
796 KB |
Output is partially correct |
40 |
Partially correct |
419 ms |
796 KB |
Output is partially correct |