답안 #60571

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
60571 2018-07-24T11:05:36 Z egorlifar Zalmoxis (BOI18_zalmoxis) C++17
0 / 100
886 ms 206072 KB
/*
ЗАПУСКАЕМ 
░ГУСЯ░▄▀▀▀▄░РАБОТЯГУ░░
▄███▀░◐░░░▌░░░░░░░
░░░░▌░░░░░▐░░░░░░░
░░░░▐░░░░░▐░░░░░░░
░░░░▌░░░░░▐▄▄░░░░░
░░░░▌░░░░▄▀▒▒▀▀▀▀▄
░░░▐░░░░▐▒▒▒▒▒▒▒▒▀▀▄
░░░▐░░░░▐▄▒▒▒▒▒▒▒▒▒▒▀▄
░░░░▀▄░░░░▀▄▒▒▒▒▒▒▒▒▒▒▀▄
░░░░░░▀▄▄▄▄▄█▄▄▄▄▄▄▄▄▄▄▄▀▄
░░░░░░░░░░░▌▌░▌▌░░░░░
░░░░░░░░░░░▌▌░▌▌░░░░░
░░░░░░░░░▄▄▌▌▄▌▌░░░░░ 
 */
#include <iostream>
#include <complex>
#include <vector>
#include <string>
#include <algorithm>
#include <cstdio>
#include <numeric>
#include <cstring>
#include <ctime>
#include <cstdlib>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <list>
#include <cmath>
#include <bitset>
#include <cassert>
#include <queue>
#include <stack>
#include <deque>
    
     
using namespace std;
template<typename T1, typename T2>inline void chkmin(T1 &x, T2 y) { if (x > y) x = y; }
template<typename T1, typename T2>inline void chkmax(T1 &x, T2 y) { if (x < y) x = y; } 
template<typename T, typename U> inline ostream &operator<< (ostream &_out, const pair<T, U> &_p) { _out << _p.first << ' ' << _p.second; return _out; }
template<typename T, typename U> inline istream &operator>> (istream &_in, pair<T, U> &_p) { _in >> _p.first >> _p.second; return _in; }
template<typename T> inline ostream &operator<< (ostream &_out, const vector<T> &_v) { if (_v.empty()) { return _out; } _out << _v.front(); for (auto _it = ++_v.begin(); _it != _v.end(); ++_it) { _out << ' ' << *_it; } return _out; }
template<typename T> inline istream &operator>> (istream &_in, vector<T> &_v) { for (auto &_i : _v) { _in >> _i; } return _in; }
template<typename T> inline ostream &operator<< (ostream &_out, const set<T> &_s) { if (_s.empty()) { return _out; } _out << *_s.begin(); for (auto _it = ++_s.begin(); _it != _s.end(); ++_it) { _out << ' ' << *_it; } return _out; }
template<typename T> inline ostream &operator<< (ostream &_out, const multiset<T> &_s) { if (_s.empty()) { return _out; } _out << *_s.begin(); for (auto _it = ++_s.begin(); _it != _s.end(); ++_it) { _out << ' ' << *_it; } return _out; }
template<typename T> inline ostream &operator<< (ostream &_out, const unordered_set<T> &_s) { if (_s.empty()) { return _out; } _out << *_s.begin(); for (auto _it = ++_s.begin(); _it != _s.end(); ++_it) { _out << ' ' << *_it; } return _out; }
template<typename T> inline ostream &operator<< (ostream &_out, const unordered_multiset<T> &_s) { if (_s.empty()) { return _out; } _out << *_s.begin(); for (auto _it = ++_s.begin(); _it != _s.end(); ++_it) { _out << ' ' << *_it; } return _out; }
template<typename T, typename U> inline ostream &operator<< (ostream &_out, const map<T, U> &_m) { if (_m.empty()) { return _out; } _out << '(' << _m.begin()->first << ": " << _m.begin()->second << ')'; for (auto _it = ++_m.begin(); _it != _m.end(); ++_it) { _out << ", (" << _it->first << ": " << _it->second << ')'; } return _out; }
template<typename T, typename U> inline ostream &operator<< (ostream &_out, const unordered_map<T, U> &_m) { if (_m.empty()) { return _out; } _out << '(' << _m.begin()->first << ": " << _m.begin()->second << ')'; for (auto _it = ++_m.begin(); _it != _m.end(); ++_it) { _out << ", (" << _it->first << ": " << _it->second << ')'; } return _out; }
#define sz(c) (int)(c).size()
#define all(c) (c).begin(), (c).end()
#define rall(c) (c).rbegin(), (c).rend()
#define left left228
#define right right228
#define next next228
#define rank rank228
#define prev prev228
#define y1 y1228                                                         
#define read(FILENAME) freopen((FILENAME + ".in").c_str(), "r", stdin)
#define write(FILENAME) freopen((FILENAME + ".out").c_str(), "w", stdout)
#define files(FILENAME) read(FILENAME), write(FILENAME)
#define pb push_back
const string FILENAME = "input";
const int MAXN = 2000001;


int n, k;
int a[MAXN];
vector<int> g[MAXN];


int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	//read(FILENAME);
    cin >> n >> k;
    vector<pair<int, pair<int, int> > > st;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        st.pb({a[i], {i, i}});
    }
    for (int t = 1; t <= 29; t++) {
        vector<pair<int, pair<int, int> > > st1;
        for (int i = 0; i < sz(st); i++) {
            if (st1.empty()) {
                st1.pb(st[i]);
                continue;
            }
            if (st[i].first == t) {
                if (st1.back().first == t) {
                    st1.back().first++;
                    st1.back().second.second = st[i].second.second;
                } else {
                    st1.pb(st[i]);
                }
            } else {
                if (st1.back().first == t) {
                    st1.back().first++;
                    k--;
                    g[st1.back().second.second].pb(t);
                }
                st1.pb(st[i]);
            }
        }
        if (st1.back().first == t) {
            st1.back().first++;
            k--;    
            g[st1.back().second.second].pb(t);
        }
        st = st1;
    }
    vector<int> ans;
    for (int i = 0; i < n; i++) {
        ans.pb(a[i]);
        for (auto x: g[i]) {
            //cout << x << endl;
            if ((1 << (x - 1)) <= k) {
                for (int j = 0; j < (1 << (x - 1)); j++) {
                    ans.pb(1);
                }
                k -= (1 << (x - 1));
            } else {
                if (k) {
                    int cur = x;
                    for (int t = x - 2; t >= 0; t--) {
                        if (k >= (1 << t)) {
                            cur--;
                            //cout << t << endl;
                            for (int j = 0; j < (1 << t); j++) {
                                ans.pb(cur - t);
                            }
                            k -= (1 << t);
                        }
                    }
                    ans.pb(cur);
                } else {
                    ans.pb(x);
                }
            }
        }
    }
    assert(sz(ans) == n + k);
    for (int i = 0; i < sz(ans); i++) {
        cout << ans[i] << ' ';
    }
	return 0; 		
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 729 ms 194836 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 619 ms 194836 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 791 ms 194836 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 697 ms 194836 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 758 ms 194836 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 886 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# 결과 실행 시간 메모리 Grader output
1 Runtime error 800 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 856 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 697 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 708 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 705 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 812 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 660 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 649 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 673 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 358 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 560 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 156 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 146 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 135 ms 206072 KB Execution killed with signal 11 (could be triggered by violating memory limits)