제출 #50043

#제출 시각아이디문제언어결과실행 시간메모리
50043Benq저울 (IOI15_scales)C++14
55.56 / 100
3 ms620 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>

using namespace std;
using namespace __gnu_pbds;
 
typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;

typedef pair<int, int> pi;
typedef pair<ll,ll> pl;
typedef pair<ld,ld> pd;

typedef vector<int> vi;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<cd> vcd;

template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag,tree_order_statistics_node_update>;

#define FOR(i, a, b) for (int i=a; i<(b); i++)
#define F0R(i, a) for (int i=0; i<(a); i++)
#define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)

#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()

const int MOD = 1000000007;
const ll INF = 1e18;
const int MX = 100001;

/*int num = 0, val[7];

bool cmp(int a, int b) { return val[a] < val[b]; }

int getR(vi a, int b) {
    sort(all(a),cmp); return a[b];
}

int getLightest(int A, int B, int C) {
    return getR({A,B,C},0);
}

int getHeaviest(int A, int B, int C) {
    return getR({A,B,C},2);
}

int getMedian(int A, int B, int C) {
    return getR({A,B,C},1);
}

int getNextLightest(int A, int B, int C, int D) {
    vi z = {A,B,C}; sort(all(z),cmp);
    F0R(i,3) if (cmp(D,z[i])) return z[i];
    return z[0];
}

void answer(vi cur) {
    for (int i: cur) cout << i << " ";
    cout << "\n";
}*/

#include "scales.h"

void init(int T) {}

vi insEnd(vi cur, int x) {
    int t = getMedian(cur[0],cur[2],x);
    if (t == cur[0]) cur.insert(cur.begin(),x);
    else cur.pb(x);
    return cur;
}

vi ins(vi cur, int x) {
    int t = getNextLightest(cur[0],cur[sz(cur)/2],cur[sz(cur)-1],x);
    if (t == cur[0]) return insEnd(cur,x);
    if (t == cur[sz(cur)/2]) {
        if (sz(cur) == 3) {
            cur.insert(cur.begin()+1,x);
        } else {
            if (getHeaviest(cur[0],cur[1],x) == x) cur.insert(cur.begin()+2,x);
            else cur.insert(cur.begin()+1,x);
        }
    } else {
        if (sz(cur) <= 4) {
            cur.insert(cur.begin()+sz(cur)/2+1,x);
        } else {
            if (getHeaviest(cur[2],cur[3],x) == x) cur.insert(cur.begin()+4,x);
            else cur.insert(cur.begin()+3,x);
        }
    }
    return cur;
}

void orderCoins() {
    /*FOR(i,1,7) {
        int x; cin >> x;
        val[x] = i;
    }*/
    int a = getHeaviest(1,2,3), b = getLightest(1,2,3);
    vi cur = {b,6-a-b,a};
    FOR(i,4,7) cur = ins(cur,i);
    int* res = new int[6]; F0R(i,6) res[i] = cur[i];
    answer(res);
}

컴파일 시 표준 에러 (stderr) 메시지

In file included from grader.c:2:0:
graderlib.c: In function 'void answer(int*)':
graderlib.c:53:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
     if (_ghksjhdfkae19ga_ > 1) 
     ^~
graderlib.c:56:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
  for (i = 0; i < 6; i++) {
  ^~~
scales.cpp: In function 'void init(int)':
scales.cpp:76:15: warning: unused parameter 'T' [-Wunused-parameter]
 void init(int T) {}
               ^
#Verdict Execution timeMemoryGrader output
Fetching results...