Submission #520181

#TimeUsernameProblemLanguageResultExecution timeMemory
520181prvocisloZalmoxis (BOI18_zalmoxis)C++17
35 / 100
450 ms262148 KiB
#include <algorithm> #include <iostream> #include <string> #include <random> #include <chrono> #include <vector> #include <cmath> #include <set> #include <map> #include <iomanip> #include <queue> #include <bitset> #include <cmath> typedef long long ll; typedef long double ld; using namespace std; void compress(vector<int>& st) { while (st.size() >= 2 && st[st.size() - 2] == st[st.size() - 1]) { int x = st.back(); st.pop_back(); st.pop_back(); st.push_back(x + 1); } } void split(int x, int k, vector<int>& v) { if (k == 1) { v.push_back(x); return; } int l = min(k - 1, 1 << (x - 2)); split(x - 1, l, v); split(x - 1, k - l, v); } int main() { ios::sync_with_stdio(false); cin.tie(0); int n, k; cin >> n >> k; vector<int> v(n); for (int i = 0; i < n; i++) cin >> v[i]; vector<int> st, ans1, added; for (int i = 0; i < n; i++) { while (!st.empty() && st.back() < v[i]) { st.push_back(st.back()); ans1.push_back(st.back()); added.push_back(1); compress(st); } st.push_back(v[i]); ans1.push_back(v[i]); added.push_back(0); compress(st); } while (st.size() > 1 || st.back() < 30) { st.push_back(st.back()); ans1.push_back(st.back()); added.push_back(1); compress(st); } k = n + k - ans1.size(); vector<int> ans2; for (int i = 0; i < ans1.size(); i++) { if (added[i]) { split(ans1[i], min(k + 1, 1 << ans1[i]), ans2); } else { ans2.push_back(ans1[i]); } } for (int i = 0; i < ans2.size(); i++) { cout << ans2[i] << " \n"[i == ans2.size() - 1]; } return 0; }

Compilation message (stderr)

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:71:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |     for (int i = 0; i < ans1.size(); i++)
      |                     ~~^~~~~~~~~~~~~
zalmoxis.cpp:82:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |     for (int i = 0; i < ans2.size(); i++)
      |                     ~~^~~~~~~~~~~~~
zalmoxis.cpp:84:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |         cout << ans2[i] << " \n"[i == ans2.size() - 1];
      |                                  ~~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...