Submission #1071042

#TimeUsernameProblemLanguageResultExecution timeMemory
1071042ttamxAncient Machine (JOI21_ancient_machine)C++17
40 / 100
54 ms9048 KiB
#include "Anna.h"
#include <bits/stdc++.h>

using namespace std;

void Anna(int n,vector<char> s){
  int seq=0,cnt=0,pw=1;
  for(int i=0;i<n;i++){
    seq+=pw*(s[i]-'X');
    cnt++;
    pw*=3;
    if(cnt==5){
      for(int j=0;j<8;j++){
        Send(seq>>j&1);
      }
      seq=cnt=0;
      pw=1;
    }
  }
  if(cnt>0){
    for(int j=0;j<8;j++){
      Send(seq>>j&1);
    }
  }
}
#include "Bruno.h"
#include <bits/stdc++.h>

using namespace std;

void Bruno(int n,int m,vector<int> a){
  assert(m%8==0);
  vector<char> s;
  for(int i=0;i<m;i+=8){
    int seq=0;
    for(int j=0;j<8;j++){
      seq|=(a[i+j]<<j);
    }
    for(int j=0;j<5;j++){
      s.emplace_back(char('X'+(seq%3)));
      seq/=3;
    }
  }
  assert(s.size()>=n);
  s.resize(n);
  stack<int> st;
  for(int i=0;i<n;i++){
    if(s[i]=='X'){
      if(st.empty()||s[st.top()]=='Y'){
        st.emplace(i);
      }else{
        Remove(i);
      }
    }else if(s[i]=='Y'){
      if(!st.empty()&&s[st.top()]=='X'){
        st.emplace(i);
      }else{
        Remove(i);
      }
    }else if(s[i]=='Z'){
      while(st.size()>1){
        Remove(st.top());
        st.pop();
      }
      Remove(i);
    }else{
      assert(false);
    }
  }
  while(!st.empty()){
    Remove(st.top());
    st.pop();
  }
}

Compilation message (stderr)

In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from Bruno.cpp:2:
Bruno.cpp: In function 'void Bruno(int, int, std::vector<int>)':
Bruno.cpp:19:18: warning: comparison of integer expressions of different signedness: 'std::vector<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   19 |   assert(s.size()>=n);
      |          ~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...