Submission #68585

#TimeUsernameProblemLanguageResultExecution timeMemory
68585aomeZalmoxis (BOI18_zalmoxis)C++17
65 / 100
1098 ms46508 KiB
#include <bits/stdc++.h> using namespace std; vector<int> vres, vcur, vadd; void add() { int tmp = vcur.back(); vadd.push_back(vres.size()); vres.push_back(tmp); ++tmp; vcur.pop_back(); while (vcur.size() && vcur.back() == tmp) { vcur.pop_back(), tmp++; } vcur.push_back(tmp); } void cal(int val, int need) { if (need == 1) { printf("%d ", val); return; } int tmp = min(need - 1, (1 << (val - 2))); cal(val - 1, tmp), cal(val - 1, need - tmp); } int main() { int n, m, x; scanf("%d %d %d", &n, &m, &x); vres.push_back(x), vcur.push_back(x); for (int i = 1; i < n; ++i) { scanf("%d", &x); if (vcur.back() > x) { vres.push_back(x), vcur.push_back(x); } else { while (vcur.back() < x) add(); if (vcur.back() > x) { vres.push_back(x), vcur.push_back(x); } else { vres.push_back(x); ++x; vcur.pop_back(); while (vcur.size() && vcur.back() == x) { vcur.pop_back(), x++; } vcur.push_back(x); } } } while (vcur.back() != 30) add(); int ptr = 0; for (int i = 0; i < vres.size(); ++i) { if (ptr < vadd.size() && vadd[ptr] == i) { ++ptr; int tmp = min(m - ((int)vadd.size() - ptr), 1 << (vres[i] - 1)); m -= tmp; cal(vres[i], tmp); } else printf("%d ", vres[i]); } }

Compilation message (stderr)

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:54:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < vres.size(); ++i) {
                  ~~^~~~~~~~~~~~~
zalmoxis.cpp:55:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (ptr < vadd.size() && vadd[ptr] == i) {
       ~~~~^~~~~~~~~~~~~
zalmoxis.cpp:29:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d %d", &n, &m, &x);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
zalmoxis.cpp:32:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &x);
   ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...