제출 #940578

#제출 시각아이디문제언어결과실행 시간메모리
940578SundavarMonster Game (JOI21_monster)C++17
0 / 100
11 ms8792 KiB
#include "monster.h" #include <bits/stdc++.h> using namespace std; vector<vector<int> > m(1000, vector<int>(1000, -1)); bool ask(int a, int b){ if(m[a][b] == -1){ m[a][b] = Query(a,b); m[b][a] = 1 - m[a][b]; } return m[a][b]; } vector<int> solve(vector<int> v){ int N = v.size(); if(N <= 12){ vector<pair<int,int> > cnt(N); vector<int> amb1, amb2; for(int i = 0; i < N; i++){ cnt[i].second = v[i]; for(int j = 0; j < i; j++) if(j != i){ if(ask(v[i],v[j])) cnt[i].first++; else cnt[j].first++; } } sort(cnt.begin(), cnt.end()); if(cnt[0].first == cnt[1].first){ if(!ask(cnt[0].second,cnt[1].second)) swap(cnt[0], cnt[1]); } if(cnt[1].first == cnt[2].first){ if(!ask(cnt[1].second,cnt[2].second)) swap(cnt[1], cnt[2]); } if(cnt[N-2].first == cnt[N-1].first){ if(!ask(cnt[N-2].second,cnt[N-1].second)) swap(cnt[N-2], cnt[N-1]); } if(cnt[N-3].first == cnt[N-2].first){ if(!ask(cnt[N-3].second,cnt[N-2].second)) swap(cnt[N-3], cnt[N-2]); } vector<int> res; for(pair<int,int>& a : cnt) res.push_back(a.second); return res; } vector<int> left, right; int m = rand()%N; while(true){ left.clear(), right.clear(); for(int i = 0; i < N; i++) if(i != m){ if(ask(v[m], v[i])) left.push_back(v[i]); else right.push_back(v[i]); } if(min(left.size(), right.size()) <= 4){ m = rand()%N; continue; } break; } left = solve(left), right = solve(right); if(!ask(left[left.size()-1], v[m])) swap(left[left.size()-1], right[0]); vector<int> res; for(int& a : left) res.push_back(a); res.push_back(v[m]); for(int& a : right) res.push_back(a); } std::vector<int> Solve(int N) { vector<int> v; for(int i = 0; i < N ; i++) v.push_back(i); v = solve(v); vector<int> T(N); for(int i = 0; i < N; i++) T[v[i]] = i; return T; }

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

monster.cpp: In function 'std::vector<int> solve(std::vector<int>)':
monster.cpp:44:15: warning: control reaches end of non-void function [-Wreturn-type]
   44 |   vector<int> left, right;
      |               ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...