Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # include "scales.h"
- # include <bits/stdc++.h>
- using namespace std;
- const int N = 6;
- int W[N];
- vector< int > vrr; /// for working
- vector< int > grr; /// for permutation
- vector< pair< int, int > > stat; /// list of comparison
- map< pair< int, int > , int > mp_a; /// for knowing we compare pair (x, y) or not
- void init (int T) {
- //
- }
- void orderCoins () {
- grr.push_back(1);
- grr.push_back(2);
- grr.push_back(3);
- grr.push_back(4);
- grr.push_back(5);
- grr.push_back(6);
- stat.clear();
- mp_a.clear();
- int a, b, c, x, y, i, j, t, k;
- /**
- X = getHeaviest(1, 2, 3);
- X = getLightest(1, 2, 3);
- X = getMedian(1, 2, 3);
- X = getNextLightest(1, 2, 3, 4);
- */
- k = 0; /// kol of founded pairs ( P[i], P[i + 1])
- while(1 == 1){
- if(k > 6) break;
- vrr = grr;
- /// check : satisfy to list of comparison
- t = 1;
- for(i = 0; i < stat.size(); i++){
- a = stat[i].first;
- b = stat[i].second;
- x = y = -1;
- for(j = 0; j < vrr.size(); i++){
- if(vrr[j] == a) x = j;
- if(vrr[j] == b) y = j;
- }
- if(x >= y){
- t = 0;
- break;
- }
- }
- /// if satisfy t = 1; else t = 0;
- if(t == 1){
- for(i = 0; i + 1 < vrr.size(); i++){
- /// if find pair P[i] and P[i + 1] which not situated in list of comparison
- if(mp_a[make_pair(vrr[i], vrr[i + 1])] == 0){
- k++;
- if(i + 2 < vrr.size()){
- a = vrr[i];
- b = vrr[i + 1];
- c = vrr[i + 2];
- x = getLightest(a, b, c);
- if(x != a){
- stat.push_back(make_pair(x, a));
- mp_a[make_pair(x, a)] = 1;
- }
- if(x != b){
- stat.push_back(make_pair(x, b));
- mp_a[make_pair(x, b)] = 1;
- }
- if(x != c){
- stat.push_back(make_pair(x, c));
- mp_a[make_pair(x, c)] = 1;
- }
- if(vrr[i] != x){
- t = 0;
- break;
- }
- }
- else {
- a = vrr[i - 1];
- b = vrr[i];
- c = vrr[i + 1];
- x = getHeaviest(a, b, c);
- if(x != a){
- stat.push_back(make_pair(a, x));
- mp_a[make_pair(a, x)] = 1;
- }
- if(x != b){
- stat.push_back(make_pair(b, x));
- mp_a[make_pair(b, x)] = 1;
- }
- if(x != c){
- stat.push_back(make_pair(c, x));
- mp_a[make_pair(c, x)] = 1;
- }
- if(vrr[i + 1] != x){
- t = 0;
- break;
- }
- }
- }
- }
- }
- if((t == 0) && (next_permutation(grr.begin(), grr.end()) == 0)) break;
- }
- vrr = grr;
- for(int i = 0; i < vrr.size(); i++){
- W[i] = vrr[i];
- }
- answer(W);
- }
Add Comment
Please, Sign In to add comment