답안 #139387

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
139387 2019-07-31T15:37:27 Z mechfrog88 Zalmoxis (BOI18_zalmoxis) C++14
40 / 100
190 ms 19488 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 (w > 1 && 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 19296 KB Output is correct
2 Correct 179 ms 19308 KB Output is correct
3 Correct 178 ms 19300 KB Output is correct
4 Correct 179 ms 19396 KB Output is correct
5 Correct 179 ms 19292 KB Output is correct
6 Correct 180 ms 19288 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 185 ms 19292 KB not a zalsequence
2 Correct 183 ms 19368 KB Output is correct
3 Correct 180 ms 19292 KB Output is correct
4 Incorrect 180 ms 19292 KB not a zalsequence
5 Incorrect 179 ms 19296 KB not a zalsequence
6 Incorrect 178 ms 19292 KB not a zalsequence
7 Incorrect 190 ms 19488 KB not a zalsequence
8 Incorrect 187 ms 19368 KB not a zalsequence
9 Incorrect 167 ms 17244 KB not a zalsequence
10 Incorrect 113 ms 8964 KB not a zalsequence
11 Incorrect 138 ms 13544 KB not a zalsequence
12 Incorrect 2 ms 376 KB Unexpected end of file - int32 expected
13 Incorrect 2 ms 376 KB Unexpected end of file - int32 expected
14 Incorrect 2 ms 372 KB Unexpected end of file - int32 expected