Submission #64777

#TimeUsernameProblemLanguageResultExecution timeMemory
64777GoodZalmoxis (BOI18_zalmoxis)C++11
30 / 100
309 ms68632 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #define ff first #define ss second #define Maxn 1000003 #define ll long long #define pb push_back #define Inf 1000000009 #define ppb() pop_back() #define pii pair <int , int> #define mid(x, y) (x + y) / 2 #define all(x) x.begin(),x.end() #define llInf 1000000000000000009 #define tr(i, c) for(__typeof(c).begin() i = (c).begin() ; i != (c).end() ; i++) using namespace std; using namespace __gnu_pbds; typedef tree <int, null_type, less <int>, rb_tree_tag, tree_order_statistics_node_update> order; int n, k; ll cnt[33]; int A[Maxn]; int P[Maxn]; vector <int> v, v1, E[Maxn]; int main () { //freopen ("file.in", "r", stdin); //freopen ("file.out", "w", stdout); //srand ((unsigned) time ( NULL )); //int randomNumber = rand() % 10 + 1; scanf ("%d%d", &n, &k); int mn = 40; for (int i = 1; i <= n; i++) scanf ("%d", A + i); for (int i = 1; i <= n; i++) { int x = A[i]; while (v.size() > 0 and x == v.back()) { v.ppb(); x++; } v.pb (x); P[v.size() - 1] = i; } for (auto i: v) mn = min (i, mn); int sm = 0; for (int i = mn; i < 30; i++) { for (int j = 0; j < v.size(); j++) { if (v[j] == i) sm ++, v1.pb (v[j]), E[P[j]].pb (v[j]); int e = v[j]; while (v1.size() > 0 and e == v1.back()) e ++, v1.ppb(); v1.pb (e); P[v1.size() - 1] = P[j]; } v = v1; v1.clear(); } assert (sm <= k); k -= sm; for (int i = 1; i <= n; i++) { printf ("%d ", A[i]); for (auto j: E[i]) { memset (cnt, 0, sizeof (cnt)); cnt[j] = 1; for (int l = j; l >= 1; l--) { while (k > 0 and cnt[l] > 0) cnt[l - 1] += 2, cnt[l] --, k --; for (int h = 1; h <= cnt[l]; h++) printf ("%d ", l); } } } return 0; }

Compilation message (stderr)

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:57:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int j = 0; j < v.size(); j++) {   
                   ~~^~~~~~~~~~
zalmoxis.cpp:34:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf ("%d%d", &n, &k);
  ~~~~~~^~~~~~~~~~~~~~~~
zalmoxis.cpp:38:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf ("%d", A + i);
   ~~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...