2020浙江工业大学程序设计迎新赛——决赛(重现赛)A 超级卷王

题目

Description

内卷指不能从外部渠道获取资源,没有产生整体的增量,只能在存量分配上做文章,往往损害内部一部分甚至绝大多数群体利益来补偿少数群体的利益,最终整体利益没有增加,持续性内耗的一种状态。内卷本身是个艰难晦涩的社会学专用名词,今天之所以能成为热搜,都是因为今天内卷是很多人今天可以亲身感受到的社会现象。

“内卷”被现在很多高校学生来指代非理性的内部竞争或“被自愿”竞争,这种风气已经逐渐蔓延到中小学甚至幼儿园。

已知浙江工业大学幼儿园今年有 n 名新生入学,每名同学会有以下属性:

编号 i d i id_i idi
初始能力值 s i s_i si
自卷系数 p i p_i pi 即该名同学每天结束后能力能够增长 p i p_i pi

为了选拔出一名“超级卷王”,浙工大幼儿园每天都会进行一次测试,直到角逐出“超级卷王”为止。

每次测试会根据同学们的能力值为第一关键字降序排名,编号为第二关键字按升序排名,淘汰排名较低的 ⌊ n 2 ⌋ \lfloor \frac{n}{2} \rfloor 2n人 ( 其中 ⌊ n 2 ⌋ \lfloor \frac{n}{2} \rfloor 2n n n n 2 2 2 并向下取整)

在本次测试中排名前十的同学会受到老师的褒奖,备受激励,能力值立即增长 R R R

当剩余人数不少于66人时,排名前三的同学会受到大多数人的嘲讽,心情变差,下一天能力值下降LL。

请你帮浙工大幼儿园的老师预测出最终的卷王是谁,并输出他的编号和最终的能力值。

Input

第一行输入三个正整数 n n n R R R L L L,分别代表新生的人数,受到老师褒奖后能力增长值,受到同学嘲讽后能力下降值。
第二行输入 nn 个正整数 i d i id_i idi,代表第 i i i 个新生的编号。
第三行输入 n n n 个正整数 s i s_i si代表第 ii 个新生的初始能力值。
第四行输入 n n n 个整数 p i p_i pi ,代表第 ii 个新生的自卷系数。

n ≤ 100 n\le 100 n100
0 ≤ L , R ≤ 1 0 7 0\le L,R\le 10^7 0L,R107

1 ≤ i d i ≤ n 1 \le id_i \le n 1idin
0 ≤ s i ≤ 1 0 8 0 \le s_i \le 10^8 0si108
− 1 0 7 ≤ p i ≤ 1 0 7 -10^7 \le p_i \le 10^7 107pi107

Output

输出两个正整数,分别代表“超级卷王”编号和最终能力值,并用一个空格分隔。

Sample Input 1

2 2 0
1 2
1 2
4 1
Sample Output 1

2 4
Hint

第一天:

同学的编号为 1,21,2,能力分别为 1,21,2,排名分别为 2,12,1。

编号为 11 的同学被淘汰,22 号同学受到褒奖能力值增长 22,剩余人数少于 66,没有人受到嘲讽。

最终 22 号同学获胜,能力值为 44。

思路

按照题目要求来模拟,立即增加的属性在统计之前加上,第二天发生的在统计之后变化。注意每天刚开始的时候排序。

代码

#include <bits/stdc++.h>
using namespace std;

typedef long long ll; 

const int maxn = 100+10;

class Stu {
	public:
		ll id,s,p;
}t[maxn];

bool cmp(Stu a,Stu b)
{
	return a.s==b.s?a.id<b.id:a.s>b.s;
} 
int main()
{
	int n,r,l;
	cin>>n>>r>>l;
	for(int i=1;i<=n;i++) cin>>t[i].id;
	for(int i=1;i<=n;i++) cin>>t[i].s;
	for(int i=1;i<=n;i++) cin>>t[i].p;
	if(n==1) return cout<<t[1].id<<" "<<t[1].s,0;
	while(n!=1)
	{
		sort(t+1,t+1+n,cmp);
		n -= n/2;
		for(int i=1;i<=min(10,n);i++) t[i].s += r;
		if(n == 1) 
		{
			return cout<<t[1].id<<" "<<t[1].s,0;
		}
		if(n>=6) t[1].s -= l,t[2].s -= l,t[3].s -= l;
		for(int i=1;i<=n;i++) t[i].s += t[i].p;
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值