CF540 B 贪心

坑在B题是常态,弱智的日常。

是找中位数不是平均值。

慌了,乱写了

出了一塌糊涂的ZZ代码

特记一下

/** @Date    : 2017-08-27 17:25:11
  * @FileName: B.cpp
  * @Platform: Windows
  * @Author  : Lweleth (SoungEarlf@gmail.com)
  * @Link    : https://github.com/
  * @Version : $Id$
  */
#include <bits/stdc++.h>
#define LL long long
#define PII pair<int ,int>
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std;

const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8;

vector<int>q;
int main()
{
	int n, k, p, x, y;
	while(cin >> n >> k >> p >> x >> y)
	{
		q.clear();
		int rec = 0;
		int ma = 0;
		int mi = 0;
		int cnt1 = 0;
		int cnt2 = 0;
		int flag = 0;
		for(int i = 0; i < k; i++)
		{
			int t;
			scanf("%d", &t);
			if(t >= y)
			{
				if(cnt2 == (n+1)/2)
					cnt1++;
				else cnt2++;
			}
			else 
			{
				if(cnt1 == n/2)
					cnt2++, flag = 1;
				else cnt1++;
			}
			rec += t;
		}

		if(rec + n/2 - cnt1 + ((n + 1) / 2 - cnt2)*y > x || flag)
		{
			printf("-1
");
			continue;
		}
		for(int i = 0; i < (n/2) - cnt1; i++)
			rec+=1, q.PB(1);
		for(int i = 0; i < (n + 1) / 2 - cnt2; i++)
			rec+=y, q.PB(y);
		if(rec > x)
		{
			printf("-1
");
			continue;
		}
		for(auto i:q)
			printf("%d ", i);
		printf("
");
	}

    return 0;
}
原文地址:https://www.cnblogs.com/Yumesenya/p/7449963.html