G
著名出题人小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.
问题链接:
https://vjudge.net/contest/274223#problem/G
问题简述:
1、输入赛题数量 2、输入每个赛题的验题人数量以及AC了该题的队伍数量 3输入每个验题人的代码字节数n 每支AC队伍的代码字节数m。若m=0则该行为空行。 输出problem:x、最短验题人代码字节数y、最短的选手代码字节数z 若z=0则输出N/A
问题分析:
首先要一个排序,用于筛选最小的字节数并输出
之后需要一个循环嵌套 进行一步步的输入
排序要在循环内进行 并赋值到数组中 数组用于输出
贴上代码↓↓↓
#include <iostream>
using namespace std;
void bubble(int a[], int n)//排序
{ int temp;
for(int i=1;i<n;i++)
{
for (int j = 0;j<n-i;j++)
{ if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
int main()
{
int T;
cin >> T;//赛题数量
int n[13], m[13];
int a[20];
int b[500];
int y[13];
int z[13];
for (int i = 0; i < T; i++)//每题的n&m
{
cin >> n[i] >> m[i];//验题人数量&AC队伍数
for(int j=0;j<n[i];j++)
{
cin >> a[j];
}
bubble(a, n[i]);
y[i] = a[0];
for (int k = 0; k < m[i]; k++)
{
cin >> b[k];
}
if (m[i] != 0)
{
bubble(b, m[i]);
z[i] = b[0];
}
}
for(int i=1;i<=T;i++)//输出
{
int x = i + 1000;
cout << "Problem " << x << ":"<<endl;
cout << "Shortest judge solution: " << y[i-1] << " bytes." << endl;
if (m[i-1]!=0)
cout << "Shortest team solution: " << z[i-1] << " bytes." << endl;
if(m[i-1]==0)
cout << "Shortest team solution: " << "N/A" << " bytes."<<endl;
}
return 0;
}