Submission #228037

#TimeUsernameProblemLanguageResultExecution timeMemory
228037mohamedsobhi777Zalmoxis (BOI18_zalmoxis)C++14
0 / 100
682 ms20516 KiB
#include<bits/stdc++.h>

using namespace std ;

const int N = 1e5 + 7 ; 

int n , k ;
priority_queue<pair<int, int > > mu ; 

vector<pair<int , int> > arr ; 

int main(){
    ios_base::sync_with_stdio(0) ; 
    cin.tie(0) ; 
    //freopen("in.in" , "r" , stdin) ; 
    cin>>n>>k ; 

    for(int i = 0 ; i < n ; i++){
        int t ; 
        cin>>t ; 
        mu.push({ -t , i }) ; 
        arr.push_back({t , i }) ; 
    }
    while(k){
        if(mu.size() ==1 ){
            mu.push(mu.top()) ;
            arr.push_back(mu.top()) ; 
            k--;
            continue ; 
        }
        pair<int , int > t1 = mu.top() ; mu.pop() ; 
        pair<int , int > t2 = mu.top() ; mu.pop() ; 
        if(t1.first == t2.first ){
            mu.push({ t1.first -1 , t1.second -2 });
            continue ; 
        }
        else{
            mu.push(t2) ;
            mu.push(t1) ;
            mu.push(t1) ;  
            arr.push_back( t1 ); 
            k-- ; 
        }
    }
    sort(arr.begin() , arr.end() , [&] (pair<int , int > p1 , pair<int , int > p2) {
        return p1.second < p2.second ; 
    }) ; 
    for(auto u : arr){
        cout<<abs(u.first) <<" " ; 
    }

    return 0 ; 
} 
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...