hdu 1.3.2 排名
2015-11-07 21:40
204 查看
/*排名*/
#include <cstdio>
#include<cstring>
using namespace std;
struct infor
{
char name[25];//编号
int n;//做出题的个数
int bianhao[15];//做出题的编号
int goal;//得到的分数
};
int main()
{
int N=0,M=0,G=0;
int sorce[15];//记录每道题的分数
struct infor In[1005];
while(scanf("%d",&N)==1&&N!=0)
{
scanf("%d%d",&M,&G);
for(int i=0;i<M;i++)
scanf("%d",&sorce[i]);
int sum,num=0;
for(int j=0;j<N;j++)
{
scanf("%s",In[j].name);
scanf("%d",&In[j].n);
for(int i=0;i<In[j].n;i++)
scanf("%d",&In[j].bianhao[i]);
sum=0;
if(In[j].n>=0)
{
for(int u=0;u<In[j].n;u++)//计算得分
sum=sum+sorce[In[j].bianhao[u]-1];
if(sum>=G)
num++;
In[j].goal=sum;
}
else In[j].goal=0;
}
if(num)
{
struct infor A;
int index;
for(int i=0;i<N;i++)//对分数进行排序
{
index=i;
for(int j=i+1;j<N;j++)
if(In[index].goal<In[j].goal)
index=j;
A=In[index];
In[index]=In[i];
In[i]=A;
}
for(int r=0;r<N-1;r++)//把相同分数的按照考号排序
for(int q=0;q<N-1;q++)
if(In[q].goal==In[q+1].goal&&strcmp(In[q].name,In[q+1].name)>0)
{
A=In[q];
In[q]=In[q+1];
In[q+1]=A;
}
printf("%d\n",num);
for(int j=0;j<N;j++)//输出结果
if(In[j].goal>=G)
{
printf("%s %d\n",In[j].name,In[j].goal);
In[j].goal=0;
}
}
else
printf("%d\n",0);
}
return 0;
}
#include <cstdio>
#include<cstring>
using namespace std;
struct infor
{
char name[25];//编号
int n;//做出题的个数
int bianhao[15];//做出题的编号
int goal;//得到的分数
};
int main()
{
int N=0,M=0,G=0;
int sorce[15];//记录每道题的分数
struct infor In[1005];
while(scanf("%d",&N)==1&&N!=0)
{
scanf("%d%d",&M,&G);
for(int i=0;i<M;i++)
scanf("%d",&sorce[i]);
int sum,num=0;
for(int j=0;j<N;j++)
{
scanf("%s",In[j].name);
scanf("%d",&In[j].n);
for(int i=0;i<In[j].n;i++)
scanf("%d",&In[j].bianhao[i]);
sum=0;
if(In[j].n>=0)
{
for(int u=0;u<In[j].n;u++)//计算得分
sum=sum+sorce[In[j].bianhao[u]-1];
if(sum>=G)
num++;
In[j].goal=sum;
}
else In[j].goal=0;
}
if(num)
{
struct infor A;
int index;
for(int i=0;i<N;i++)//对分数进行排序
{
index=i;
for(int j=i+1;j<N;j++)
if(In[index].goal<In[j].goal)
index=j;
A=In[index];
In[index]=In[i];
In[i]=A;
}
for(int r=0;r<N-1;r++)//把相同分数的按照考号排序
for(int q=0;q<N-1;q++)
if(In[q].goal==In[q+1].goal&&strcmp(In[q].name,In[q+1].name)>0)
{
A=In[q];
In[q]=In[q+1];
In[q+1]=A;
}
printf("%d\n",num);
for(int j=0;j<N;j++)//输出结果
if(In[j].goal>=G)
{
printf("%s %d\n",In[j].name,In[j].goal);
In[j].goal=0;
}
}
else
printf("%d\n",0);
}
return 0;
}
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)
相关文章推荐
- ios开发中MVC模式的理解
- 【转】ubuntu下pppoe后网络图标(无线网络)消失的解决办法
- SSH面试集锦——不看后悔哦!
- hdu--4435--charge-station+贪心
- 《Effective C++ 》学习笔记——条款02
- MP3播放器
- XML--做rss订阅
- AES加密算法之字节替换操作
- K-近邻分类算法KNN
- SpringMVC 基础笔记
- Machine Learning week 1 quiz: Linear Algebra
- Introduction-to-React-JS -- 2 Helloworld
- linux语句
- 删除和修改(替换)XML节点
- java里面对象的引用用来保存某个对象某个时刻下的状态
- Zookeeper笔记
- 马拉松抽筋原因及其防治
- ionic 解决android 中tabs 在上面的问题。
- 阿里巴巴面试题--Java对象初始化
- C++ pair用法