문제
https://codeforces.com/problemset/problem/1419/D2
걸린 시간
00 : 20 : 53
풀이
C++
#include <bits/stdc++.h>
#define INF 1e9
typedef long long ll;
using namespace std;
int n;
vector<int> a, reorder;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
a.resize(n); reorder.resize(n);
for(auto& i : a) cin >> i;
sort(a.begin(), a.end());
int cnt = 0;
for(int i = 1; i < n; i += 2){
reorder[i] = a[cnt];
cnt++;
}
for(int i = 0; i < n; i += 2){
reorder[i] = a[cnt];
cnt++;
}
int cheap = 0;
for(int i = 1; i < n-1; i++)
if(reorder[i-1] > reorder[i] && reorder[i+1] > reorder[i])
cheap++;
cout << cheap << "\n";
for(int i = 0; i < n; i++)
cout << reorder[i] << " ";
cout << "\n";
return 0;
}
easy version 과는 다르게 주어지는 수가 중복될 수 있다. 따라서 구매할 수 있는 ice sphere 의 개수는 재정렬된 배열의 가장자리를 제외한 모든 수들을 앞 뒤의 두 값과 비교하여 세어야 한다.
'Codeforces' 카테고리의 다른 글
Codeforces #1420A Cubes Sorting (0) | 2020.09.25 |
---|---|
Codeforces #1419B Stairs (0) | 2020.09.24 |
Codeforces 1419D1 Sage's Birthday (easy version) (0) | 2020.09.21 |
Codeforces #1419A Digit Game (0) | 2020.09.20 |
Codeforces #1409C Yet Another Array Restoration (0) | 2020.09.19 |
댓글