Submission #1322940

#TimeUsernameProblemLanguageResultExecution timeMemory
1322940JohanInfinite Race (EGOI24_infiniterace2)C++20
0 / 100
1 ms332 KiB
#include<bits/stdc++.h>
using namespace std;
void place_l(vector < int > &ord, int x){
  vector < int > cur;
  for(int i : ord){
    if(i == x)continue;
    if(i == 0)cur.push_back(x);
    cur.push_back(i);
  }
  ord = cur;
}
void place_r(vector < int > &ord, int x){
  vector < int > cur;
  for(int i : ord){
    if(i == x)continue;
    cur.push_back(i);
    if(i == 0)cur.push_back(x);
  }
  ord = cur;
}
int get(vector < int > ord, int x){
  for(int i = 0; i < ord.size(); i++){
    if(ord[i] == x)
      return i;
  }
  return 1e9;
}
int main(){
  int n, q;
  cin >> n >> q;
  int cnt = 0;
  vector < int > ord = {0};
  for(int _ = 0; _ < q; _++){
    int x;
    cin >> x;
    if(x > 0){
      int id1 = get(ord, x);
      cout << _ << "->  " << id1 << endl;
      for(auto i : ord)cout << i << ' ';cout << endl;
      while(id1 < ord.size() - 1)swap(ord[id1], ord[id1 + 1]), id1++;
      for(auto i : ord)cout << i << ' ';cout << endl;
      int id2 = get(ord, 0);
      cnt += id2 > id1;
      place_l(ord, x);
    }
    else {
      x = abs(x);
      place_r(ord, x);
    }
    // for(auto i : ord)
    //   cout << i << ' ';
    // cout << endl;
  }
  cout << cnt << "\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...