Submission #494574

#TimeUsernameProblemLanguageResultExecution timeMemory
494574ovidiush11Floppy (RMI20_floppy)C++17
28 / 100
1125 ms10028 KiB
#include <stdlib.h> #include <string.h> #include <stack> #include "floppy.h" void read_array(int subtask_id, const std::vector<int> &v) { std::string bits; std::stack<int> p; int x = 0,n = v.size(); for(int i = 1;i < n;i++) { if(v[i] < v[i-1]) { bits.push_back('0'); p.push(v[i-1]); x++; } else { bits.push_back('1'); while(x != 0 && v[i] > p.top()) { bits.push_back('1'); p.pop(); x--; } if(x != 0)bits.push_back('0'); } } save_to_floppy(bits); } std::vector<int> solve_queries(int subtask_id, int N, const std::string &bits, const std::vector<int> &a, const std::vector<int> &b) { int n = bits.size(),pos[N],x = 0,j = 0,s = 0; for(int i = 0;i < n;i++) { if(s == 1) { if(bits[i] == '1') { x--; if(x == 0)s = 0; } else s = 0; } else { if(bits[i] == '0')x++; else if(x != 0)s = 1; pos[j] = i; j++; } } pos[N-1] = bits.size(); n = a.size(); std::vector<int> ans; for(int k = 0;k < n;k++) { int i = a[k],m = a[k]; x = 0; while(i != b[k]) { int l = pos[i],r = pos[i+1]; if(bits[l] == '0')x++; else if(r - l >= x + 1) { if(bits[l + x] == '1') { x = 0; m = i + 1; } else x = 1; } else x -= r - l - 2; i++; } ans.push_back(m); } return ans; }

Compilation message (stderr)

stub.cpp: In function 'void run2()':
stub.cpp:101:30: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  101 |     if (query_answers.size() != M) {
      |         ~~~~~~~~~~~~~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...