赛题分析
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 862 Accepted Submission(s): 503
Problem Description
著名出题人小Q每次比赛后都会写一份《赛题分析》,包含比赛概况、每题的参考算法以及一些统计数值。
对于一道题来说,小Q会统计最短的验题人代码长度(Shortest judge solution)以及赛内参赛队伍最短的AC代码长度(Shortest team solution)。
统计验题人代码长度比较容易,因为验题人最多也不会超过20个。但是统计选手代码长度就不容易了,因为大赛区动辄三四百支队伍。
请写一个程序,帮助小Q统计最短代码长度。
Input
第一行包含一个正整数T(1≤T≤13),表示赛题数量。
每道题第一行包含两个整数n,m(2≤n≤20,0≤m≤500),分别表示验题人数量以及AC了该题的队伍数量。
第二行包含n个正整数a1,a2,…,an(50≤ai≤65536),依次表示每个验题人的代码字节数。
第三行包含m个正整数b1,b2,…,bn(50≤bi≤65536),依次表示每支AC队伍的代码字节数。若m=0则该行为空行。
Output
对于第i(1≤i≤T)道题,输出三行,第一行输出Problem x:,其中x=i+1000。
第二行输出Shortest judge solution: y bytes.,其中y表示最短的验题人代码字节数。
第三行输出Shortest team solution: z bytes.,其中z表示最短的选手代码字节数,若不存在请输出N/A。
注意:间隔都是一个空格。
Sample Input
2 3 2 3627 1460 5288 2365 2671 2 0 5510 7682
Sample Output
Problem 1001: Shortest judge solution: 1460 bytes. Shortest team solution: 2365 bytes. Problem 1002: Shortest judge solution: 5510 bytes. Shortest team solution: N/A bytes.
Source
Recommend
liuyiding
题解
根据题意模拟。代码如下:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std ;
int main(){
int problem = 1001 ;
int t ;
// cin >> t ;
scanf("%d" , &t) ;
while( t -- ){
int n , m ;
// cin >> n >> m ;
scanf("%d %d" , &n , &m) ;
bool check_N = false ;
if ( m == 0 ){
check_N = true ;
}
int min_byte_one = 100000 ;
int min_byte_two = 100000 ;
for ( int i = 0 ; i < n ; i ++ ){
int x ;
// cin >> x ;
scanf("%d" , &x) ;
min_byte_one = min( min_byte_one , x ) ;
}
if ( !check_N ){
for ( int i = 0 ; i < m ; i ++ ){
int x ;
// cin >> x ;
scanf("%d" , &x) ;
min_byte_two = min( min_byte_two , x ) ;
}
}else{
printf("Problem %d:\n" , problem++) ;
printf("Shortest judge solution: %d bytes.\n" , min_byte_one) ;
printf("Shortest team solution: N/A bytes.\n") ;
continue ;
}
printf("Problem %d:\n" , problem++) ;
printf("Shortest judge solution: %d bytes.\n" , min_byte_one) ;
printf("Shortest team solution: %d bytes.\n" , min_byte_two) ;
}
return 0 ;
}