답안 #668288

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
668288 2022-12-03T14:54:01 Z MrDeboo Zalmoxis (BOI18_zalmoxis) C++17
55 / 100
211 ms 36076 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define int long long
#define endl '\n'
using namespace std;
using namespace __gnu_pbds;
using ordered_set = tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update>;
deque<int>dqqq;
int k;
void ss(int a){
    k++;
    deque<int>dq={a};
    while(dq.size()*2<=k){
        int x=dq.size();
        for(int i=0;i<x;i++){
            dq.push_back(dq[i]-1);
                dq.push_back(dq[i]-1);
        }
        for(int i=0;i<x;i++){
            dq.pop_front();
        }
    }
    int c=dq.size()*2-k;
    for(int i=0;i<c;i++){
        k--;
        dqqq.push_back(dq[i]);
    }
    for(int i=c;i<dq.size();i++){
        k--;k--;
        dqqq.push_back(dq[i]-1);
            dqqq.push_back(dq[i]-1);
    }
}
signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n;
    cin>>n>>k;
    deque<int>a,b(n);
    for(auto &i:b)cin>>i;
    deque<int>doq=b;
    deque<int>dq={b[0]};
    deque<int>dqq={1};
    a.push_back(b[0]);
    b.pop_front();
    while(b.size()){
        if(b[0]<=a.back()){
            a.push_back(b[0]);
            dq.push_back(b[0]);
            dqq.push_back(0);
            b.pop_front();
        }else{
            k--;
            a.push_back(a.back());
            dq.push_back(a.back());
            dqq.push_back(1);
        }
        while(a.size()>1&&a.back()==a[a.size()-2]){
            int A=a.back();
            a.pop_back();
            a.pop_back();
            a.push_back(A+1);
        }
    }
    while(a.size()>1){
        a.push_back(a.back());
        dq.push_back(a.back());
        dqq.push_back(0);
        k--;
        while(a.size()>1&&a.back()==a[a.size()-2]){
            int A=a.back();
            a.pop_back();
            a.pop_back();
            a.push_back(A+1);
        }
    }
    int g=a.back();
    if(g==30){
        if(k==0){for(auto &i:dq)cout<<i<<' ';return 0;}
        for(int i=0;i<dq.size();i++){
            if(dqq[i])dqqq.push_back(dq[i]);
            else{
                ss(dq[i]);
            }
        }
        for(auto &i:dqqq)cout<<i<<' ';
    }
    else{
        for(int i=g;i<=29&&k;i++){
            dq.push_back(i);
            k--;
        }
        int z=dq.back();
        dq.pop_back();
        k++;
        deque<int>dqq={z};
        while(dqq.size()*2<=k){
            int x=dqq.size();
            for(int i=0;i<x;i++){
                dqq.push_back(dqq[i]-1);
                    dqq.push_back(dqq[i]-1);
            }
            for(int i=0;i<x;i++){
                dqq.pop_front();
            }
        }
        int c=dqq.size()*2-k;
        for(int i=0;i<c;i++){
            k--;
            dq.push_back(dqq[i]);
        }
        for(int i=c;i<dqq.size();i++){
            k--;k--;
            dq.push_back(dqq[i]-1);
                dq.push_back(dqq[i]-1);
        }
        assert(k==0);
        for(auto &i:dq)cout<<i<<' ';
    }
}

Compilation message

zalmoxis.cpp: In function 'void ss(long long int)':
zalmoxis.cpp:14:22: warning: comparison of integer expressions of different signedness: 'std::deque<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   14 |     while(dq.size()*2<=k){
      |           ~~~~~~~~~~~^~~
zalmoxis.cpp:29:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::deque<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for(int i=c;i<dq.size();i++){
      |                 ~^~~~~~~~~~
zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:80:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::deque<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |         for(int i=0;i<dq.size();i++){
      |                     ~^~~~~~~~~~
zalmoxis.cpp:97:27: warning: comparison of integer expressions of different signedness: 'std::deque<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   97 |         while(dqq.size()*2<=k){
      |               ~~~~~~~~~~~~^~~
zalmoxis.cpp:112:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::deque<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  112 |         for(int i=c;i<dqq.size();i++){
      |                     ~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 145 ms 27820 KB Output is correct
2 Correct 146 ms 27856 KB Output is correct
3 Correct 149 ms 27884 KB Output is correct
4 Correct 165 ms 27908 KB Output is correct
5 Correct 146 ms 27900 KB Output is correct
6 Correct 148 ms 27884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 204 ms 36072 KB doesn't contain S as a subsequence
2 Correct 141 ms 27876 KB Output is correct
3 Incorrect 205 ms 36076 KB doesn't contain S as a subsequence
4 Incorrect 210 ms 36012 KB doesn't contain S as a subsequence
5 Incorrect 197 ms 36056 KB doesn't contain S as a subsequence
6 Incorrect 193 ms 36008 KB doesn't contain S as a subsequence
7 Incorrect 199 ms 36020 KB doesn't contain S as a subsequence
8 Incorrect 211 ms 36052 KB doesn't contain S as a subsequence
9 Incorrect 180 ms 33332 KB doesn't contain S as a subsequence
10 Correct 95 ms 21728 KB Output is correct
11 Incorrect 141 ms 26668 KB doesn't contain S as a subsequence
12 Correct 69 ms 14804 KB Output is correct
13 Correct 75 ms 14808 KB Output is correct
14 Correct 68 ms 14812 KB Output is correct