Submission #782678

#TimeUsernameProblemLanguageResultExecution timeMemory
782678NothingXDScales (IOI15_scales)C++17
38.70 / 100
1 ms212 KiB
#include "scales.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef complex<ld> point;

void debug_out(){cerr << endl;}

template<typename Head, typename... Tail>
void debug_out(Head H, Tail... T){
	cerr << H << ' ';
	debug_out(T...);
}

#define debug(...) cerr << "(" << #__VA_ARGS__ << "): ", debug_out(__VA_ARGS__)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define MP(x, y) make_pair(x, y)

vector<int> a, b, c;

void init(int T) {
    // khob alan chikar konam
}

void sort(vector<int> &v, int idx){
	int x = getLightest(idx, idx+1, idx+2);
	int y = getMedian(idx, idx+1, idx+2);
	int z;
	for (int i = idx; i < idx+3; i++){
		if (i != x && i != y) z = i;
	}
	v.push_back(z);	
	v.push_back(y);
	v.push_back(x);
}

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

void orderCoins() {
	a.clear();
	b.clear();
	c.clear();
	sort(a, 1);
	sort(b, 4);
	int RNG = rng() % 2;
	if (RNG) swap(a, b);
	while(!b.empty()){
		if (a.size() == 3){
			int tmp = getHeaviest(a[0], a[1], b.back());
			if (tmp == b.back()){
				while(!a.empty()){
					c.push_back(a.back());
					a.pop_back();
				}
			}
			else{
				tmp = getNextLightest(a[0], a[1], a[2], b.back());
				while(a.back() != tmp){
					c.push_back(a.back());
					a.pop_back();
				}
			}
		}
		else if (a.size() == 2){
			int tmp = getMedian(a[0], a[1], b.back());
			if (tmp == b.back()){
				c.push_back(a[1]);
				a.pop_back();
			}
			else if (tmp == a[0]){
				c.push_back(a[1]);
				c.push_back(a[0]);
				a.clear();
			}
		}
		else if (a.size() == 1){
			int idx = (a[0] <= 3? 1: 4);
			if (a[0] == idx) idx++;
			int tmp = getHeaviest(a[0], b.back(), idx);
			if (tmp == b.back()){
				c.push_back(a[0]);
				a.clear();
			}
		}
		c.push_back(b.back());
		b.pop_back();
	}
	while(!a.empty()){
		c.push_back(a.back());
		a.pop_back();
	}
	int ans[6] = {0};
	for (int i = 0; i < 6; i++){
		ans[i] = c[i];
	}
	answer(ans);
}

Compilation message (stderr)

scales.cpp: In function 'void init(int)':
scales.cpp:28:15: warning: unused parameter 'T' [-Wunused-parameter]
   28 | void init(int T) {
      |           ~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...