답안 #139382

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
139382 2019-07-31T15:33:05 Z mechfrog88 Zalmoxis (BOI18_zalmoxis) C++14
40 / 100
190 ms 18700 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("unroll-loops,no-stack-protector")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
 
using namespace __gnu_pbds;
using namespace std;
 
template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
 
typedef long long ll;
typedef long double ld;
 
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    ll n,k;
    cin >> n >> k;
    vector <ll> arr(n);
    vector <ll> low;
    ll mini = 30;
    for (int z=0;z<n;z++){
        cin >> arr[z];
    }
    ll c = 0;
    vector <ll> ans;
    vector <bool> lol;
    for (int z=0;z<n;z++){
        c += 1 << arr[z];
        for (int q=0;q<arr[z];q++){
            if (c & (1 << q)){
                ans.push_back(q);
                lol.push_back(true);
                c += 1 << q;
                k--;
            }
        }
        ans.push_back(arr[z]);
        lol.push_back(false);
    }
    for (int q=0;q<30;q++){
        if (c & (1 << q)){
            lol.push_back(true);
            ans.push_back(q);
            c += 1 << q;
            k--;
        }
    }
    for (int z=0;z<ans.size();z++){
        if (!lol[z]) {
            cout << ans[z] << " ";
            continue;
        }
        ll w = 0;
        bool ok = true;
        while (ans[z] > 0 && k > 0){
            if (ok) {k++; ok = false;}
            if (k < 2) break;
            ans[z]--;
            k -= 2;
            w += 2;
        }
        if (k == 1 && ans[z] > 1){
            cout << ans[z]-1 << " " << ans[z]-1 << " ";
            w--;
            k--;
        }
        if (w == 0){
            cout << ans[z] << " ";
        } else {
            for (int x=0;x<w;x++){
                cout << ans[z] << " ";
            }
        }   
    }
    cout << endl;
}

Compilation message

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:51:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int z=0;z<ans.size();z++){
                  ~^~~~~~~~~~~
zalmoxis.cpp:23:8: warning: unused variable 'mini' [-Wunused-variable]
     ll mini = 30;
        ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 180 ms 18524 KB Output is correct
2 Correct 180 ms 18700 KB Output is correct
3 Correct 184 ms 18656 KB Output is correct
4 Correct 180 ms 18652 KB Output is correct
5 Correct 180 ms 18652 KB Output is correct
6 Correct 178 ms 18584 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 184 ms 18524 KB not a zalsequence
2 Correct 178 ms 18600 KB Output is correct
3 Correct 181 ms 18692 KB Output is correct
4 Incorrect 180 ms 18660 KB not a zalsequence
5 Incorrect 180 ms 18652 KB not a zalsequence
6 Incorrect 185 ms 18628 KB not a zalsequence
7 Incorrect 190 ms 18660 KB not a zalsequence
8 Incorrect 184 ms 18596 KB not a zalsequence
9 Incorrect 171 ms 16476 KB not a zalsequence
10 Incorrect 123 ms 8680 KB not a zalsequence
11 Incorrect 139 ms 12904 KB not a zalsequence
12 Incorrect 2 ms 380 KB Unexpected end of file - int32 expected
13 Incorrect 2 ms 376 KB Unexpected end of file - int32 expected
14 Incorrect 2 ms 376 KB Unexpected end of file - int32 expected