제출 #278064

#제출 시각아이디문제언어결과실행 시간메모리
278064test2Zalmoxis (BOI18_zalmoxis)C++14
0 / 100
1107 ms106392 KiB
#include<bits/stdc++.h>

#define I inline void 

using namespace std ; 

using ll = long long ; 
using ld = long double ; 

const int N = 1e5 + 7 ; 

// How interesting!

int n , k ; 

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

	cin >> n >> k ; 

	multiset<int> mul ; 

	multiset< pair<int , int >  > v ; 

	for(int i = 1 ;i <= n ;i++){
		int x ; 
		cin >> x ; 
		mul.insert(x) ; 
		v.insert({x , i }) ; 
	}

	set<int> adds ;

	for(int i = 0 ;i < k ;i++){
		auto it = mul.begin() ;
		auto itt = it ; 
		itt++ ; 
		if(it == mul.end() || (*itt) != (*it) ){
			adds.insert(*it) ; 

			mul.erase(it) ; 
			mul.insert( (*it) + 1) ; 
		}
		else {
			mul.erase(it) ; 
			mul.erase(itt) ; 
			mul.insert((*it) + 1) ; 
			i-- ; 
		}
	}

	int j = 0 ; 
	int last = 0 ; 
	vector<pair< int  , int > > ans ; 

	int st = 0 ; 
	for(auto u : v){
		if(!j) j = u.second , st =u.second; 
		auto it = adds.begin() ; 

		while(adds.size() && (*it) < u.first ){
			adds.erase(it) ; 
			ans.push_back({j++ , (*it)}) ; 
			it = adds.begin() ; 
		}
		if( u.second < st )
			ans.push_back({ u.second , u.first}) ; 
		else 
			ans.push_back({j++  , u.first}) ;
	}

	for(auto u : adds)
		ans.push_back({j++ , u}) ; 

	sort(ans.begin(), ans.end()) ;
	for(auto u : ans)
		cout<< u.second <<" ";

	return 0 ; 
}

컴파일 시 표준 에러 (stderr) 메시지

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:55:6: warning: unused variable 'last' [-Wunused-variable]
   55 |  int last = 0 ;
      |      ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...