# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
668511 | victor_gao | 저울 (IOI15_scales) | C++17 | 1 ms | 212 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
void init(int T) {
/* ... */
}
deque<int>solve(int ql,int qr){
int mn=getLightest(ql,ql+1,qr);
int mid=getMedian(ql,ql+1,qr);
deque<int>ans;
ans.push_back(mn); ans.push_back(mid);
for (int i=ql;i<=qr;i++)
if (i!=mn&&i!=mid)
ans.push_back(i);
return ans;
}
void orderCoins() {
/* ... */
int W[] = {1, 2, 3, 4, 5, 6};
deque<int>l,r,ans;
l=solve(1,3);
r=solve(4,6);
int p1=0,p2=0;
for (p1=0;p1<3;p1++){
if (p1+p2>=3) break;
while (p1+p2<3){
int q1=l[p1],q2,q3;
if (p1+1<3) q2=l[p1+1],q3=r[p2];
else q2=r[p2+1],q3=r[p2];
int mn=getLightest(q1,q2,q3);
if (mn==q1){
ans.push_back(q1);
break;
}
else {
ans.push_back(q3);
p2++;
}
}
if (p1+p2>=3) break;
}
vector<int>remain;
if (p1>=3){
for (;p2<3;p2++)
ans.push_back(r[p2]);
}
else if (p2>=3){
for (;p1<3;p1++)
ans.push_back(l[p1]);
}
else {
int q1=l[p1],q3=r[p2],q2;
if (p1+1<3){
q2=l[p1+1];
int mid=getMedian(q1,q2,q3);
if (mid==q1){
ans.push_back(q3);
ans.push_back(q1);
ans.push_back(q2);
}
else if (mid==q3){
ans.push_back(q1);
ans.push_back(q3);
ans.push_back(q2);
}
else {
ans.push_back(q1);
ans.push_back(q2);
ans.push_back(q3);
}
}
else {
q2=r[p2+1];
int mid=getMedian(q1,q2,q3);
if (mid==q1){
ans.push_back(q3);
ans.push_back(q1);
ans.push_back(q2);
}
else if (mid==q3){
ans.push_back(q1);
ans.push_back(q3);
ans.push_back(q2);
}
else {
ans.push_back(q3);
ans.push_back(q2);
ans.push_back(q1);
}
}
}
for (int i=0;i<6;i++)
W[i]=ans[i];
answer(W);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |