列表

详情


NC216207. BsqAKZUCCPC

描述

新生赛开赛在即,打算预测每道题的过题人数,现在他想知道如果按照他预测的过题数据,会有多少人能够(全部通过)或爆零(无法通过任何一道题)呢。因为并不知道榜单实际的过题情况,所以希望你能帮助他预测和爆零的人数区间。

输入描述

第一行给出一个正整数,表示接下来会给出T组测试数据。
对于每组测试数据,第一行给出两个正整数表示新生赛有多少个题目,表示参赛人数。
第二行给出个数字,第个数字表示第道题通过的人数

输出描述

对于每组数据,第一行给出两个数字L_1,R_1表示AK的人数在区间内,第二行给出两个数字L_2,R_2表示爆零的人数在区间内。

示例1

输入:

2
2 20
19 19
4 5
1 1 1 1

输出:

18 19
0 1
0 1
1 4

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 81ms, 内存消耗: 2572K, 提交时间: 2021-02-10 17:45:14

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int t,n,m,l1,l2,r1,r2,a;cin>>t;
	while(t--){
		cin>>n>>m;l1=l2=r1=r2=m;
		for(int i=0;i<n;++i){
			cin>>a;
			r1=min(r1,a);l2=max(0,l2-a);
			l1=max(0,l1-m+a);r2=min(r2,m-a); 
		}
		cout<<l1<<" "<<r1<<endl<<l2<<" "<<r2<<endl;
	}
	return 0;
} 

Python3(3.9) 解法, 执行用时: 73ms, 内存消耗: 7748K, 提交时间: 2020-12-26 19:22:20

for x in range(int(input())):
    (n,total),pa=map(int,input().split()),list(map(int,input().split()))
    print(max(0,total-(total*n-sum(pa))),min(pa))
    print(max(0,total-sum(pa)),total-max(pa))

上一题