Submission #1262125

#TimeUsernameProblemLanguageResultExecution timeMemory
1262125JuanJLScales (IOI15_scales)C++20
0 / 100
918 ms589824 KiB
#include "scales.h" #include <bits/stdc++.h> #define fst first #define snd second #define pb push_back #define SZ(x) (int)x.size() #define ALL(x) x.begin(),x.end() #define forn(i,a,b) for(int i = a; i < b; i++) #define mset(a,v) memset(a,v,sizeof(a)) #define FIN ios::sync_with_stdio(0); cout.tie(0); cin.tie(0); using namespace std; typedef long long ll; vector<ll> p1; vector<ll> s1(3); vector<ll> p2; vector<ll> s2(3); vector<ll> lleft(6,-5); vector<ll> rright(6,-5); vector<int> res; ll men, p, ind; void init(int T) { /* ... */ p1 = {1,2,3}; p2 = {4,5,6}; forn(i,0,6) lleft[i]=rright[i]=-5; res.clear(); } void orderCoins() { /* ... */ s1[2]=getHeaviest(1,2,3); s1[1]=getMedian(1,2,3); p1.erase(find(ALL(p1),s1[2])); p1.erase(find(ALL(p1),s1[1])); s1[0]=p1[0]; s2[2]=getHeaviest(4,5,6); s2[1]=getMedian(4,5,6); p2.erase(find(ALL(p2),s2[2])); p2.erase(find(ALL(p2),s2[1])); s2[0]=p2[0]; forn(i,0,3) lleft[s1[i]-1]=s1[i-1]-1, rright[s1[i]-1]=(i<2?s1[i+1]-1:-1); men = getLightest(s1[0],s2[0],s2[1]); if(men==s2[0]){ swap(s1,s2); } rright[s2[0]-1] = rright[s1[0]-1]; rright[s1[0]-1]=s2[0]-1; lleft[s2[0]-1]= s1[0]-1; lleft[rright[s2[0]-1]]=s2[0]-1; //cout<<"pasa\n"; forn(i,1,3){ //cout<<s1[0]<<" "<<s1[1]<<" "<<s1[2]<<" "<<s2[i]<<'\n'; p = getNextLightest(s1[0],s1[1],s1[2],s2[i]); // si es mayor a todos devuelve s1[0] -> se puede detectar si s1[0] es menor que s2[0] // sino devuelve el menor que sea mayor if(p==s1[0]){ forn(j,0,6){ if(rright[j]==-1){ rright[j]=s2[i]-1; lleft[s2[i]-1]=j; rright[s2[i]-1]=-1; } } }else{ rright[s2[i]-1]=p-1; lleft[s2[i]-1]=lleft[p-1]; rright[lleft[p-1]]=s2[i]-1; lleft[p-1]=s2[i]-1; } } //forn(i,0,6) cout<<lleft[i]<<" "<<rright[i]<<'\n'; ind = men-1; while(ind!=-1){ //cout<<ind+1<<'\n'; res.pb(ind+1); ind=rright[ind]; } int W[] = {res[0], res[1], res[2], res[3], res[4], res[5]}; answer(W); }
#Verdict Execution timeMemoryGrader output
Fetching results...