Submission #145670

#TimeUsernameProblemLanguageResultExecution timeMemory
145670BlagojceZalmoxis (BOI18_zalmoxis)C++11
0 / 100
1082 ms24568 KiB
#include <bits/stdc++.h>
#define fr(i, n, m) for(int i = (n); i < (m); i ++)
#define pb push_back
#define st first
#define nd second
#define pq priority_queue
#define all(x) begin(x),end(x)

using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
ll const inf = 1e9;
ll const mod = 998244853;
ld const eps = 1e-9;


bool f(pii A, pii B){
        if(A.st < B.st)return true;
        else return A.nd > B.nd;
}
int main()
{
        int n, k;
        cin >> n >> k;
        int a[n];
        int b[n];
        int MIN = 40;
        int nxt[n];
        fr(i, 0, n){
                cin >> a[i];
                b[i] = a[i];
                MIN = min(a[i], MIN);
                nxt[i] = i + 1;
        }
        nxt[n - 1] = n - 1;
        vector<pii> v;
        int sz = n;
        fr(mi, MIN, 30){
                int p = 0;
                fr(i, 0, sz - 1){
                        if(a[p] == mi){
                                if(a[nxt[p]] == mi){
                                        a[p] = mi + 1;
                                        nxt[p] = nxt[nxt[p]];
                                }
                                else{
                                        v.pb({i, mi});
                                        a[p] = mi + 1;
                                }
                        }
                        p = nxt[p];
                }
        }
        sort(v.begin(), v.end(), f);

        int j = 0;
        k -= v.size();

        fr(i, 0, n){
                while(j < v.size() && v[j].st == i){

                        cout << v[j].nd <<' ';
                        j ++;
                }
                cout << b[i] <<' ';
        }
        cout <<endl;


        return 0;
}

Compilation message (stderr)

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:61:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 while(j < v.size() && v[j].st == i){
                       ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...