제출 #1271090

#제출 시각아이디문제언어결과실행 시간메모리
1271090Faggi저울 (IOI15_scales)C++20
38.46 / 100
1 ms328 KiB
#include <bits/stdc++.h> #include "scales.h" #define ll long long #define sz(x) int(x.size()) #define forn(i,n) for(i=0; i<n; i++) #define all(x) x.begin(),x.end() #define pb push_back #define mp make_pair #define fr first #define se second using namespace std; /* int getMedian(int A, int B, int C); int getHeaviest(int A, int B, int C); int getLightest(int A, int B, int C); int getNextLightest(int A, int B, int C, int D); void answer(int C[]);*/ void init(int T){ } void ord(vector<ll>&v) { vector<ll>ans; ans.pb(getLightest(v[0],v[1],v[2])); ans.pb(getMedian(v[0],v[1],v[2])); for(ll i=0; i<sz(v); i++) if(v[i]!=ans[0]&&v[i]!=ans[1]) ans.pb(v[i]); v=ans; } void ret(vector<ll>&v,vector<ll>&q) { ll i; int c[6]; for(i=0; i<3; i++) c[i]=v[i]; for(i=0; i<3; i++) c[i+3]=q[i]; answer(c); } void orderCoins() { vector<ll>v, q; q={1,2,3}; ll i, x, sig=4, j, y, z, k; for(i=0; i<3; i++) { x=getLightest(q[0],q[1],q[2]); v.pb(x); for(j=0; j<sz(q); j++) if(q[j]==x) q[j]=sig++; } x=getLightest(q[0],q[1],q[2]); y=getHeaviest(v[0],v[1],v[2]); for(i=0; i<sz(q); i++) if(x!=q[i]) z=q[i]; k=getLightest(x,y,z); if(k!=y) { j=0; for(i=0; i<sz(v); i++) if(v[i]==y) j=i; for(i=0; i<sz(q); i++) if(q[i]==x) { swap(q[i],v[j]); break; } ord(v); vector<ll>q2; q2.pb(q[i]); q2.pb(getMedian(q[0],q[1],q[2])); for(k=0; k<sz(q); k++) if(q[k]!=q2[0]&&q[k]!=q2[1]) q2.pb(q[k]); ret(v,q2); return; } ord(v); ord(q); ret(v,q); return; }
#Verdict Execution timeMemoryGrader output
Fetching results...