CF1419 D2. Sage's Birthday (hard version)

思路(贪心):
排序后分奇偶,小的放在奇数位,大的放在偶数位,最后for一遍查找满足条件的解即可(蒟蒻啥都不会,只能借鉴他人思路)
链接:(10条消息) D2. Sage‘s Birthday (hard version)(构造+贪心)_C_Dreamy的博客-CSDN博客
代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
typedef pair<int, int> PII;
const int N = 1e5 + 10, mod = 1e9 + 7;
int n;
int a[N], ans[N];
void solve()
{
cin >> n;
for (int i = 1; i <= n; i ++)
{
cin >> a[i];
}
sort(a + 1, a + 1 + n);
int num = 0;
int p = 1;
for (int i = 2; i <= n; i += 2)
{
ans[i] = a[p];
p ++;
}
for (int i = 1; i <= n; i += 2)
{
ans[i] = a[p];
p ++;
}
for (int i = 2; i <= n; i += 2)
{
if(ans[i] < ans[i - 1] && ans[i] < ans[i + 1]) num ++;
}
cout << num << endl;
for (int i = 1; i <= n; i ++)
cout << ans[i] << " ";
cout << endl;
}
int main()
{
ios::sync_with_stdio(0);
//int T;
//cin >> T;
//while(T --)
//{
solve();
//}
return 0;
}

浙公网安备 33010602011771号