Submission #572928

#TimeUsernameProblemLanguageResultExecution timeMemory
572928MohamedFaresNebiliArt Collections (BOI22_art)C++17
20 / 100
145 ms676 KiB
#include <bits/stdc++.h> #include "art.h" #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; using ll = long long; using ii = pair<int, int>; using vi = vector<int>; #define pb push_back #define pp pop_back #define ff first #define ss second #define lb lower_bound #define all(x) (x).begin(), (x).end() typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set; void solve(int N) { set<int> adj[N + 1], rev[N + 1]; int income[N + 1]{0}; for(int l = 1; l <= N; l++) { vector<int> R; for(int i = 1; i <= N; i++) { if(i == l) continue; R.pb(i); } R.pb(l); int k = publish(R), p = k; for(int i = N - 1; i > 0; i--) { swap(R[i], R[i - 1]); k = publish(R); if(k < p) { adj[l].insert(R[i]); rev[R[i]].insert(l); income[l]++; } else { adj[R[i]].insert(l); rev[l].insert(R[i]); income[R[i]]++; } p = k; } } bool vis[N + 1]{0}; vector<int> R; queue<int> q; for(int l = 1; l <= N; l++) income[l] /= 2; for(int l = 1; l <= N; l++) { if(income[l]) continue; q.push(l); vis[l] = 1; } while(!q.empty()) { int a = q.front(); q.pop(); R.pb(a); for(auto u : rev[a]) { income[u] --; if(vis[u] || income[u] != 0) continue; vis[u] = 1; q.push(u); } } reverse(all(R)); answer(R); }

Compilation message (stderr)

interface.cpp: In function 'int publish(std::vector<int>)':
interface.cpp:20:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   20 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
interface.cpp: In function 'void answer(std::vector<int>)':
interface.cpp:36:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...