zoukankan      html  css  js  c++  java
  • Sage's Birthday (hard version)

    https://codeforces.com/contest/1419/problem/D2

    做法:

    可以先给数组排个顺序(从大到小),然后选择后(n/2+1)个元素插到前面的大数字之前,

    一个样例:

    6

    2 2 2 2 2 1

    输出

    1

    2 2 2 1 2 2

    写了很久这个脑残题,很难过。。。。

    #include<iostream>
    #include<cstring>
    #include<queue>
    #include<algorithm>
    #include<vector>
    using namespace std;
    const int maxn =  2e5+11;
    typedef long long ll;
    ll list[maxn];
    bool bml(int a,int b){
    	return a>b;
    }
    vector<int>ins;
    
    int main(){
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>list[i];
    	}
    	sort(list + 1,list+1+n,bml);
    	
    	int j = (n+2)/2 + 1;
    	
    	for(int i=1;i<=n;i++,j++){
    		
    		if(i <= (n+2)/2) ins.push_back(list[i]);
    		if(j <= n) ins.push_back(list[j]);
    	}
    	
    	int ans = 0;
    	
    	for(int i=1;i<ins.size()-1;i++){
    		if(ins[i] < ins[i-1] && ins[i] < ins[i+1]) ans++;
    	}
    	
    	cout<<ans<<endl;
    	for(int i=0;i<ins.size();i++){
    		cout<<ins[i]<<" ";
    	}
    	
    	cout<<endl;
    	
    	
    	
    	return 0;
    } 
    

      

  • 相关阅读:
    HDU 1010 Tempter of the Bone
    HDU 4421 Bit Magic(奇葩式解法)
    HDU 2614 Beat 深搜DFS
    HDU 1495 非常可乐 BFS 搜索
    Road to Cinema
    Sea Battle
    Interview with Oleg
    Spotlights
    Substring
    Dominating Patterns
  • 原文地址:https://www.cnblogs.com/lesning/p/14132486.html
Copyright © 2011-2022 走看看