Submission #785691

#TimeUsernameProblemLanguageResultExecution timeMemory
785691Soumya1Nice sequence (IZhO18_sequence)C++17
100 / 100
972 ms32748 KiB
#include <bits/stdc++.h>
#ifdef __LOCAL__
  #include <debug_local.h>
#endif
using namespace std;
void testCase() {
  int n, m;
  cin >> n >> m;
  int lo = 0, hi = 2 * (n + m);
  vector<int> q;
  auto check = [&](int l) {
    vector<int> deg(l + 1);
    for (int i = 0; i <= l; i++) {
      if (i - n >= 0) deg[i - n]++;
      if (i + m <= l) deg[i + m]++;
    }
    q.clear();
    for (int i = 0; i <= l; i++) {
      if (!deg[i]) q.push_back(i);
    }
    for (int i = 0; i < q.size(); i++) {
      int u = q[i];
      for (int v : {u - n, u + m}) {
        if (v >= 0 && v <= l) {
          deg[v]--;
          if (!deg[v]) q.push_back(v);
        }
      }
    }
    return (q.size() == l + 1);
  };
  while (lo < hi) {
    int mid = (lo + hi + 1) >> 1;
    if (check(mid)) lo = mid;
    else hi = mid - 1;
  }
  check(lo);
  vector<int> ans(lo + 1);
  for (int i = 0; i <= lo; i++) {
    ans[q[i]] = i;
  }
  cout << lo << "\n";
  for (int i = 1; i <= lo; i++) {
    cout << ans[i] - ans[i - 1] << " ";
  }
  cout << "\n";
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int tc;
  cin >> tc;
  while (tc--) {
    testCase();
  }
  return 0;
}

Compilation message (stderr)

sequence.cpp: In lambda function:
sequence.cpp:21:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |     for (int i = 0; i < q.size(); i++) {
      |                     ~~^~~~~~~~~~
sequence.cpp:30:22: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   30 |     return (q.size() == l + 1);
      |             ~~~~~~~~~^~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...