제출 #1366553

#제출 시각아이디문제언어결과실행 시간메모리
1366553julia_08The Collection Game (BOI21_swaps)C++20
25 / 100
25 ms784 KiB
#include <bits/stdc++.h>
#include "swaps.h"

using namespace std;

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

const int MAXN = 510;

bool cmp[MAXN][MAXN];

/*
vector<int> p;

vector<pair<int, int>> ask;

void schedule(int a, int b){
    
  ask.push_back({a, b});
  
}

vector<int> visit(){
  
  vector<int> ret;
  for(auto [a, b] : ask) ret.push_back((p[a - 1] > p[b - 1]));
  ask.clear();
  
  return ret;
  
}

void answer(vector<int> &ans){
  
  cout << "Your solution: ";
  for(auto i : ans) cout << p[i - 1] << " ";
  cout << "\n";
    
}
*/

int take_max(vector<int> &cur){

  if((int) cur.size() == 1) return cur[0];

  vector<int> cand;
  
  for(int i=1; i<cur.size(); i+=2) schedule(cur[i], cur[i - 1]);
  
  vector<int> ret = visit();
  
  for(int k=0; k<ret.size(); k++){
      
    if(ret[k]){
      cand.push_back(cur[2 * k + 1]);
    } else cand.push_back(cur[2 * k]);
    
  }
  
  if((int) cur.size() % 2) cand.push_back(cur.back());
  return take_max(cand);
  
}

void solve(int n, int v){
  
  // for(int i=1; i<=n; i++) p.push_back(i);
  // shuffle(p.begin(), p.end(), rng);
  
  vector<int> cur, vtx;

  for(int i=1; i<=n; i++) cur.push_back(i);
  
  for(int i=0; i<n; i++){
      
    int k = take_max(cur);

    for(int j=0; j<cur.size(); j++){
      if(cur[j] == k){
        swap(cur[j], cur.back());
      }
    }
    
    vtx.push_back(cur.back());
    cur.pop_back();
    
  }

  answer(vtx);

}

/*
int main(){
  int n, v; cin >> n >> v;
  solve(n, v);
}
*/
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…