【链接】 我是链接,点我呀:)

【题意】

已知k门成绩.
总共有n门成绩.
让你构造剩下的n-k门成绩,使得这n门成绩的中位数>=y,并且这n门成绩的和要小于等于x.
n为奇数

【题解】

首先判断k门成绩的和是不是小于等于x.
然后x-sum就是剩下的n-k个数字最多能填的和。
可以这样。
既然中位数要大于等于y;
那么转化为让(n+1)/2个数字都大于等于p;
则在剩下的n-k个位置凑足(n+1)/2个p就够了。
凑够了就都用1填就好。

【代码】

#include <bits/stdc++.h>
using namespace std; const int N = 1e3; int n,k,p,x,y;
int a[N+10];
vector <int> v; void wujie(){
puts("-1");
exit(0);
} void buqi(int pos,int rest){
for (int i = pos;i <= n;i++){
v.push_back(1);
rest--;
if (rest<0) wujie();
}
} int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "rt", stdin);
#endif scanf("%d%d%d%d%d",&n,&k,&p,&x,&y);
for (int i = 1;i <= k;i++) scanf("%d",&a[i]);
int sum1 = 0;
for (int i = 1;i <= k;i++) sum1+=a[i]; if (sum1 > x) wujie();
int rest = x - sum1;
if (rest < (n-k)) wujie();
int num = 0;
for (int i = 1;i <= k;i++)
if (a[i]>=y) num++; if (num>=(n+1)/2)
buqi(k+1,rest);
else{
int need = (n+1)/2 - num;
int i;
bool flag = true; for (i = k+1;i <= n;i++){
if (rest>=y){
v.push_back(y);
rest-=y;
need--;
if (need==0) break;
}else{
flag = false;
break;
}
}
if (flag && need==0){
if (i+1<=n) buqi(i+1,rest);
}else wujie();
}
for (int i = 0,first = 1;i < (int) v.size();i++){
if (!first) putchar(' ');
first = 0;
printf("%d",v[i]);
}
return 0;
}

【Codeforces Round #301 (Div. 2) B】 School Marks的更多相关文章

  1. 【Codeforces Round #301 (Div. 2) E】Infinite Inversions

    [链接] 我是链接,点我呀:) [题意] 给你一个无限长的序列1,2,3,4... 然后给你n个操作. 每个操作ai,bi; 表示调换位置为ai和位置为bi的数的位置. (ai,bi<=10^9 ...

  2. 【Codeforces Round #301 (Div. 2) D】 Bad Luck Island

    [链接] 我是链接,点我呀:) [题意] 剪刀.石头.布各有r,s,p个生活在同一个村子里. 它们两两之间相遇的几率都相同(相遇后就会按照划拳的规则判断输赢,输的人就死掉了). 问你最后只剩下剪刀,只 ...

  3. 【Codeforces Round #301 (Div. 2) C】 Ice Cave

    [链接] 我是链接,点我呀:) [题意] 给你一个n*m的地图. 每个地图为0的时候可以安全走过,且走过后变成1. (一定要离开之后才会变成1) 而为1的则走过之后会掉入下一层. 你一开始在初始位置( ...

  4. 【Codeforces Round #301 (Div. 2) A】 Combination Lock

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟水题 [代码] #include <bits/stdc++.h> using namespace std; cons ...

  5. 【Codeforces Round #424 (Div. 2) C】Jury Marks

    [Link]:http://codeforces.com/contest/831/problem/C [Description] 有一个人参加一个比赛; 他一开始有一个初始分数x; 有k个评委要依次对 ...

  6. 【Codeforces Round #432 (Div. 1) B】Arpa and a list of numbers

    [链接]h在这里写链接 [题意] 定义bad list是一个非空的.最大公约数为1的序列.给定一个序列,有两种操作:花费x将一个元素删除.花费y将一个元素加1,问你将这个序列变为good list所需 ...

  7. 【Codeforces Round #420 (Div. 2) C】Okabe and Boxes

    [题目链接]:http://codeforces.com/contest/821/problem/C [题意] 给你2*n个操作; 包括把1..n中的某一个数压入栈顶,以及把栈顶元素弹出; 保证压入和 ...

  8. 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees

    [题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...

  9. 【Codeforces Round #420 (Div. 2) A】Okabe and Future Gadget Laboratory

    [题目链接]:http://codeforces.com/contest/821/problem/A [题意] 给你一个n*n的数组; 然后问你,是不是每个位置(x,y); 都能找到一个同一行的元素q ...

随机推荐

  1. 错误:created a ThreadLocal with key of type ……but failed to remove it when the web application was stopped. This is very likely to create a memory leak.

    tomcat reload显示错误:SEVERE: The web application [/Interceptor] created a ThreadLocal with key of type ...

  2. java 第三方库

    转载自http://www.cnblogs.com/lucus-jia/p/3483511.html java 第三方库   总结一下常用的java第三方库,方便查询和使用,欢迎补充. 1.核心库 A ...

  3. 趣题: 按二进制中1的个数枚举1~2^n (位运算技巧)

    ; ; k <= n; k++){ << k)-,u = << n; s < u;){ ;i < n;i++) printf(-i)&); print ...

  4. userdel---删除用户及相关文件

    userdel命令   userdel命令用于删除给定的用户,以及与用户相关的文件.若不加选项,则仅删除用户帐号,而不删除相关文件. 语法 userdel(选项)(参数) 选项 -f:强制删除用户,即 ...

  5. Linux 创建新用户并添加到sudo用户组

    附上一份相当奢华的文档:  https://www.cnblogs.com/jxhd1/p/6528574.html 添加用户到组 usermod -a -G sudo newone

  6. understand软件使用教程(转)

    源代码阅读工具(Scientific Toolworks Understand)的特色 1.支持多语言:Ada, C, C++, C#, Java, FORTRAN, Delphi, Jovial, ...

  7. ArcGIS “Error HRESULT E_FAIL has been returned from a call to a COM component.” 异常的解决

    错误提示内容: {System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been ret ...

  8. Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

    if (isset($array[2])){ 抛出错误  Cannot use isset() on the result of an expression (you can use "nu ...

  9. Android学习笔记进阶19之给图片加边框

    //设置颜色 public void setColour(int color){ co = color; } //设置边框宽度 public void setBorderWidth(int width ...

  10. 18.C语言多线程总结

    创建一个线程 _beginthread(myfun, , NULL);//返回值是一个HANDLE hd[i] = CreateThread(NULL, , add, NULL, , NULL);// ...