2045年,世界杯足球赛逐渐被“地球超级杯”所取代(后面,简称为地球杯,EarthCup
)。 一届EarthCup
有 n
支(n≤50000
)足球队参加。每两支队之间有一场比赛。这意味着每支球队都将与其他所有球队进行 n-1
场比赛。 为了使比赛结果清楚,规定如果比赛结束时两队打成平手,就进行点球大战,直到有结果为止。 在EarthCup
上,每支球队都有一个积分,赢了一场就得一分,输了一场就得零分。得分最高的队将获得冠军。 2333年,有人发现,多年以来,一些球队雇佣黑客攻击和篡改EarthCup
的数据,也许是因为球队数量太多,几百年来没有发现这种严重的作弊行为。 为了检查数据是否被修改,他们开始检查过去的“积分表”。 但由于年代久远,每队只保留最后的积分结果。没有人能记得每场比赛的确切结果。现在他们想找出肯定被篡改过的“积分表”。 “Must have been modified
”意思是我们无法根据规则构造出每场比赛的结果,使得最后的积分表成立。
编程要求
根据提示,在右侧编辑器补充代码。
测试说明
输入说明
输入首先给出一个正整数 T
(T≤50
),表示测试用例的数量。 对于每个测试用例,先给出一个正整数 n
,表示参加EarthCup
的球队的数量。接下来的 n
行描述“积分表”,第 i
个整数ai
(0≤ai<n
)代表第 i
支球队的最终积分数。
输出说明
对于每个测试用例,如果积分表肯定被篡改,则输出“The data have been tampered with!
”(不带引号);否则输出“It seems to have no problem.
”(不带引号)。
平台会对你编写的代码进行测试:
测试输入:
2 3 2 1 0 3 2 2 2
预期输出: It seems to have no problem.
The data have been tampered with!
提示: 对于第一个测试用例,一个可能的情况是:Team1
胜Team2
和Team3
,积2
分;Team2
胜Team3
,但负于Team1
,积1
分;Team3
两场比赛皆负,积0
分。 对于第二个测试用例,显然不可能所有的球队都赢所有的比赛,所以积分表肯定被篡改,输入的 ai
是杂乱无章的。
试题来源:BestCoder Round #59 (div.1)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <stack>
#include <vector>
#include <set>
#include<iomanip>
#include <queue>
using namespace std;
#define x first
#define y second
#define lowbit(x) ((x)&(-(x)))
#define int long long
typedef long long ll;
typedef pair<int,int> PII;
typedef unsigned long long ULL;
const int N = 1000005;
const double PI = acos(-1);
int a[50003];
int t,n;
void solve()
{
memset(a,0,sizeof a);
cin>>n;
int tot=0;
for(int i=1;i<=n;i++)
tot+=a[i];
//先看看总数是不是目标值
if(tot != (n*(n-1)/2))
{
cout<<"The data have been tampered with!"<<endl;
return;
}
sort(a+1,a+n+1);int flag=0;
int sum=0;
//枚举从低到高 因为两两之间有对决 可以从低到高 看最低的积分有多少 很是否符合题意 在检查最后的合就行了
for(int i=1;i<=n;i++)
{
sum+=a[i];
if(sum < i*(i-1)/2)
{
cout<<"The data have been tampered with!"<<endl;
flag=1;
break;
}
}
if(flag==1) return;
cout<<"It seems to have no problem."<<endl;
}
signed main()
{
std::ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T = 1;
cin>>T;
while(T--)
solve();
}