제출 #1259903

#제출 시각아이디문제언어결과실행 시간메모리
1259903erering저울 (IOI15_scales)C++20
38.46 / 100
0 ms328 KiB
#include <bits/stdc++.h> #include "scales.h" using namespace std; #define pb push_back void init(int T) { /* ... */ } void orderCoins() { /* ... */ int W[] = {1, 2, 3, 4, 5, 6}; int a[3]; a[0]=getLightest(1,2,3); a[1]=getMedian(1,2,3); if(a[0]+a[1]==3)a[2]=3; if(a[0]+a[1]==4)a[2]=2; if(a[0]+a[1]==5)a[2]=1; // cout<<a[0]<<' '<<a[1]<<' '<<a[2]<<endl; vector<int> vec[4]; for(int i=4;i<=6;i++){ int x=getNextLightest(a[0],a[1],a[2],i); if(x==a[2])vec[2].pb(i); else if(x==a[1])vec[1].pb(i); else{ x=getLightest(a[0],a[1],i); if(x==i)vec[0].pb(i); else vec[3].pb(i); } } W[vec[0].size()]=a[0]; W[vec[0].size()+vec[1].size()+1]=a[1]; W[vec[0].size()+vec[1].size()+1+vec[2].size()+1]=a[2]; // cout<<W[0]<<' '<<W[3]<<' '<<W[4]<<endl; int last=0; for(int i=0;i<4;i++){ if(vec[i].size()==1){ W[last]=vec[i][0]; last++; } else if(vec[i].size()==3){ a[0]=getLightest(vec[i][0],vec[i][1],vec[i][2]); a[1]=getMedian(vec[i][0],vec[i][1],vec[i][2]); for(int j=0;j<3;j++){ if(vec[i][j]!=a[0] && vec[i][j]!=a[1])a[2]=vec[i][j]; } for(int j=0;j<3;j++){ W[last]=a[j]; last++; } break; } else if(vec[i].size()==2){ if(last<4){ a[0]=getLightest(vec[i][0],vec[i][1],W[last+2]); a[1]=getMedian(vec[i][0],vec[i][1],W[last+2]); } else{ a[0]=getMedian(vec[i][0],vec[i][1],W[last-1]); a[1]=getHeaviest(vec[i][0],vec[i][1],W[last-1]); } W[last]=a[0]; last++; W[last]=a[1]; last++; } last++; } //for(int i=0;i<6;i++)cout<<W[i]<<' '; //cout<<endl; answer(W); } //3 4 6 2 1 5
#Verdict Execution timeMemoryGrader output
Fetching results...