题目描述
程序员 Mark 编制的 PPYU 游戏终于上线。Mark 认为自己起早贪黑工作努力,工作量最高,于是要求项目经理给自己双倍薪水。项目经理允诺如果 Mark 在项目组中找到两个程序员,其工作量之和等于他自己的工作量,就给他双薪。请你帮助判断是否 Mark 能否得到双倍薪水。
输入
第一行给出n(1<n<100),m,表示项目组里有 n 个程序员,Mark的工作量是 m。接下来的 2~n+1 行是 n 个程序员的姓名和工作量。其中任意两个程序员的工作量不会是一样的。
输出
请你输出符合条件的两个程序员的名字,工作量小的在前面。如果有多组满足条件的数据,请每行输出一组,按第一个工作量升序输出。如果不存在满足条件的两个程序员,请输出Not Exist!
样例输入
5 15
Lucy 1
Lily 4
Wanglei 11
Dongdong 7
Mingzi 2
样例输出
Lily Wanglei
参考代码
#include <stdio.h>
#include <string.h>
int main()
{
int n,m;
char a[100][50];
int b[100][2]={0};
int temp;
char temp1[50];
int i,j;
int peace=0;
scanf("%d %d",&n,&m);
for (i=0;i<n;i++)
{
scanf("%s",a[i]);
scanf("%d",&b[i][0]);
}
for (i=0;i<n-1;i++)
{
for (j=i;j<n;j++)
{
if(b[i][0]>b[j][0])
{
temp=b[i][0];
b[i][0]=b[j][0];
b[j][0]=temp;
strcpy(temp1,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],temp1);
}
}
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if(m==b[i][0]+b[j][0] && (b[i][1]!=1 ||b[j][1]!=1))
{
printf("%s %sn",a[i],a[j]);
b[i][1]=1;
b[j][1]=1;
peace=1;
}
}
}
if(peace==0)
printf("Not Exist!n");
return 0;
}
解析
暂无