由于博客顯示原因原題顯示有異常
原題鏈接(https://vjudge.net/contest/274223#problem/G)
著名出題人小Q每次比賽后都會寫一份《賽題分析》恨豁,包含比賽概況摘盆、每題的參考算法以及一些統(tǒng)計數(shù)值蔑滓。
對于一道題來說,小Q會統(tǒng)計最短的驗題人代碼長度(Shortest judge solution)以及賽內(nèi)參賽隊伍最短的AC代碼長度(Shortest team solution)翼悴。
統(tǒng)計驗題人代碼長度比較容易少态,因為驗題人最多也不會超過
20
20
個烦却。但是統(tǒng)計選手代碼長度就不容易了仔引,因為大賽區(qū)動輒三四百支隊伍。
請寫一個程序播玖,幫助小Q統(tǒng)計最短代碼長度椎工。
Input
第一行包含一個正整數(shù)
T(1≤T≤13)
T(1≤T≤13)
,表示賽題數(shù)量蜀踏。
每道題第一行包含兩個整數(shù)
n,m(2≤n≤20,0≤m≤500)
n,m(2≤n≤20,0≤m≤500)
维蒙,分別表示驗題人數(shù)量以及AC了該題的隊伍數(shù)量。
第二行包含
n
n
個正整數(shù)
a
1
,
a
2
,...,
a
n
(50≤
a
i
≤65536)
a1,a2,...,an(50≤ai≤65536)
果覆,依次表示每個驗題人的代碼字節(jié)數(shù)颅痊。
第三行包含
m
m
個正整數(shù)
b
1
,
b
2
,...,
b
n
(50≤
b
i
≤65536)
b1,b2,...,bn(50≤bi≤65536)
,依次表示每支AC隊伍的代碼字節(jié)數(shù)局待。若
m=0
m=0
則該行為空行斑响。
Output
對于第
i(1≤i≤T)
i(1≤i≤T)
道題,輸出三行燎猛,第一行輸出Problem
x
x
:恋捆,其中
x=i+1000
x=i+1000
照皆。
第二行輸出Shortest judge solution:
y
y
bytes.重绷,其中
y
y
表示最短的驗題人代碼字節(jié)數(shù)。
第三行輸出Shortest team solution:
z
z
bytes.膜毁,其中
z
z
表示最短的選手代碼字節(jié)數(shù)昭卓,若不存在請輸出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.
問題簡述:輸入隊伍數(shù)T,驗題人數(shù)量n,AC了的隊伍數(shù)量m,第二行輸入n個每個驗題人的代碼字節(jié)數(shù)候醒。第三行輸入m個AC隊伍的代碼字節(jié)數(shù)。輸出格式為第一行為problem x(x=i+1000)杂瘸;第二行為輸出最短的驗題人代碼字節(jié)數(shù)倒淫。第三行輸出最短選手代碼字節(jié)數(shù)。如果無AC隊伍則輸出N/A败玉。
問題分析敌土;實際上主要問題是將最短的驗題人代碼字節(jié)數(shù)和最短選手代碼字節(jié)數(shù)求出來。我們定義兩個數(shù)組用來存儲輸入的字節(jié)运翼,通過冒泡排序?qū)⒆钚〉脑卣页鰜矸蹈桑€有一個需要注意的是題目對輸出格式的要求。
ACc++代碼如下
#include<iostream>
using namespace std;
void bubble(int *a,const int n)
{
for (int lunci = 1; lunci <= n-1; lunci++)
{
for (int i = 0; i < n - 1; i++)
{
if (a[i] > a[i + 1])
{
int t = a[i];
a[i] = a[i+1];
a[i+1] = t;
}
}
}
}
void shuchu(int count,int* a, int y, int z,int num)
{
cout << "Problem " << count + 1000 <<":"<< endl;
cout << "Shortest judge solution: " << y<< " bytes." << endl;
if(num!=0) cout << "Shortest team solution: " << z << " bytes." << endl;
else cout << "Shortest team solution: " <<"N/A" << " bytes." << endl;
}
int main()
{
int T;
int a[25];
int b[550];
int num[2];
cin >> T;
int count = 1;
for (int i = 0; i < T; i++)
{
cin >> num[0] >> num[1];
for (int j = 0; j < num[0]; j++)
{
cin >> a[j];
}
for (int j = 0; j < num[1]; j++)
{
cin >> b[j];
}
bubble(a, num[0]);
bubble(b, num[1]);
int y = a[0];
int z = b[0];
shuchu(count, a, y, z, num[1]);
count++;
}
}