제출 #1211631

#제출 시각아이디문제언어결과실행 시간메모리
1211631ASGA_RedSea저울 (IOI15_scales)C++20
29.46 / 100
1 ms328 KiB
/**

                                    * بسم الله الرحمن الرحيم *

                ﴾ رَبِّ اشْرَحْ لِي صَدْرِي * وَيَسِّرْ لِي أَمْرِي * وَاحْلُلْ عُقْدَةً مِّن لِّسَانِي * يَفْقَهُوا قَوْلِي ﴿

*/

/// author : "ASGA"


#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>


using namespace std;
using ll=long long;

#include "scales.h"


void answer(int w[]);
int getHeaviest(int a,int b,int c);
int getLightest(int a,int b,int c);
int getMedian(int a,int b,int c);
int getNextLightest(int a,int b,int c,int d);



void init(int T){return;}

void s(auto s,auto e){
    int a=*s,b=*(s+1),c=*(s+2),d=*(s+3);

    vector<int>o;

    int q=getLightest(a,b,c);
    int w=getMedian(a,b,c);

    o.push_back(q);
    o.push_back(w);
    if(q==a)o.push_back(w==b?c:b);
    if(q==b)o.push_back(w==a?c:a);
    if(q==c)o.push_back(w==b?a:b);

    a=o[0],b=o[1],c=o[2];

    int ee=getNextLightest(a,b,c,d);

    if(ee==a){
        int r=getHeaviest(a,b,d);
        if(r==d)o.push_back(d);
        else o.insert(o.begin(),d);
    }
    else{
        int i=(ee==b?1:2);
        o.insert(o.begin()+i,d);
    }

    int i=0;
    while(s!=e)(*s++)=o[i++];
}

void orderCoins(){
    int a[]={1,2,3,4,5,6};
    s(a,a+4);
    s(a+2,a+6);
    s(a,a+4);

    answer(a);

    return;
}


//signed main(){
//    ios_base::sync_with_stdio(0);cin.tie(0);
//
//
//    ;
//
//
//    return 0;
//}
#Verdict Execution timeMemoryGrader output
Fetching results...