Submission #1001991

#TimeUsernameProblemLanguageResultExecution timeMemory
1001991vjudge1Watermelon (INOI20_watermelon)C++17
7 / 100
2053 ms1996 KiB
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n, k;
vector<int> simulate(vector<int> v) {
  vector<int> b(n+1, -1);
  vector<int> inv(n+1, -1);
  for(int i = 0;i<n;i++)inv[v[i]]=i+1;
  for(int i = 0;i<n;i++) {
    vector<int> er;
    for(int j = 0;j<(int)v.size()-1;j++) {
      if(v[j] < v[j+1]) {
        er.push_back(j);
      }
    }
    reverse(er.begin(), er.end());
    if(er.size() == 0)break;
    for(int j:er) {
      b[inv[v[j]]] = i+1; 
      v.erase(v.begin()+j);
    }
  }
  return b;
}
bool cmp(const vector<int> &A, const vector<int> &B) {
  for(int i = 1;i<=n;i++) {
    bool check=1;
    for(int j = 1;j<i;j++) {
      for(int x = 0;x<n;x++) {
        if(A[x] == j and B[x] != j)check=false;
      }
    }
    int y = 0, x = 0;
    for(y = 0;y<n;y++) {
      if(A[y] == i)break;
    }
    for(x = 0;x<n;x++) {
      if(B[x] == i)break;
    }
    if(y >= x)check=false;
    if(check)return 1;
  }
  return false;
}
int main () {
  cin.tie(0)->sync_with_stdio(0);
  cin >> n >> k;
  vector<int> b(n+1, -1);
  for(int i = 1;i<=n;i++)cin >> b[i];
  vector<int> ans(n);
  vector<vector<int>> res;
  iota(ans.begin(), ans.end(), 1);
  do {
    vector<int> bb = simulate(ans);
    if(bb == b){
      res.push_back(ans);
    }
  }while(next_permutation(ans.begin(), ans.end()));
  sort(res.begin(), res.end(), cmp);
  if(res.size() >= k) {
    for(int i:res[k-1])cout << i << " ";
    cout << "\n";
  }
  else cout << "-1\n";

}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:60:17: warning: comparison of integer expressions of different signedness: 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   60 |   if(res.size() >= k) {
      |      ~~~~~~~~~~~^~~~
#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...