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\n"); 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\n"); continue; } for(auto i:q) printf("%d ", i); printf("\n"); } return 0; }