/*简要描述:输入一个数,代表要检测的例子的个数,每个例子中:输入两
个时间(格式 HH:MM:SS),前面时间减去后面时间输出在时钟上显示的时间,格
式一样,如果是一位数字的前面补零。
*/
/*
#include<cstdio>
int main(){
int hh,mm,ss;
int hh2,mm2,ss2;
// int temph,tempm,temps;
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&hh,&mm,&ss);
scanf("%d%d%d",&hh2,&mm2,&ss2);
if(ss<ss2){
mm=mm-1;
ss=ss+60;
}
if(mm<mm2){
hh=hh-1;
mm=mm+60;
}
printf("%02d:%02d:%02d\n",hh-hh2,mm-mm2,ss-ss2);
}
return 0;
}
*/
/简要描述:一个活动有 N(1<N<100)个人参加,一个主持人和 N-1 个普通
参加者,其中所有的人都认识主持人,主持人也认识所有的人,主持人要求 N-1
个参加者说出他们在参加者中所认识的人数,如果 A 认识 B,则 B 认识 A,所以最
少是会认识一个人,就是主持人,他们说出了自己所认识的人数后,需要判断他
们中有没有人说谎。
输入:
第一行是 N,N=0 表示结束
第二行是 N-1 个数字
输出:
Lie absolutely 或者 maybe truth
7
1 2 4 5 5 3
9
3 7 7 7 7 5 6 6
两个测试例子中第一个是 lie,第二个是 truth
7 7 7 7 6 653
76665543
76554433
76543332
76542222
76542221
76542211
//
554321
543211
542101//这里不应该出现0 ,因为最少认识一个主持人
5421-1/
//可以将数据由大到小排序,这样可以减少次数,因为大的数据在前的话一次能减小好多数
//一个人如果认识4个人,那么除了主持人将有3个数要减去1,这样最后得到的数应该是至少为1,因为都认识主持人
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
int n;
int num[100];//存储n-1个人
while(scanf("%d",&n)!=EOF,n){//输入n=0结束
for(int i=0;i<n-1;i++){
scanf("%d",&num[i]);
}
bool flag=0;
for(int i=0;i<n-2;i++){//n-1个人只需要n-2次操作
sort(num,num+n-1,cmp);//将数据从大到小排序 554321
for(int j=1;j<=num[i]-1;j++){ //从num[i+1]到num[i+num[i]-1] 都减1
num[i+j]--; //543211
}
for(int j=n-2;j>=0;j--){//遍历数组,如果有一个为0,那么就是说谎直接退出循环
if(num[j]==0) {
printf("Lie absolutely\n");
flag=1;
break;
}
}
if(flag==1) break;//退出外层for循环
}
if(flag==0) printf("maybe truth\n");//n-2个数都操作完没有发现0存在
}
return 0;
}