【C++心路历程3】我终于写出来了 分治算法
2016-10-05 19:31
405 查看
#include<algorithm>
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
struct info
{
char no[10];
char name[25];
int yuwen;
int shuxue;
int yingyu;
int wuli;
int huaxue;
int zongfen;
int rank;
};
char b[1002];
info a[50005];
int cmp(info a,info b)
{
if(a.zongfen!=b.zongfen)
{
return a.zongfen>b.zongfen;
}
if(a.zongfen==b.zongfen&&a.yuwen!=b.yuwen)
{
return a.yuwen>b.yuwen;
}
if(a.zongfen==b.zongfen&&a.yuwen==b.yuwen&&a.shuxue!=b.shuxue)
{
return a.shuxue>b.shuxue;
}
return strcmp(a.no,b.no)==-1;
};
bool cmp2(info a,info b)
{
return strcmp(a.no,b.no)<0;
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,m;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s",a[i].no);
scanf("%s%d%d%d%d%d",a[i].name,&a[i].yuwen,&a[i].shuxue,&a[i].yingyu,&a[i].wuli,&a[i].huaxue);
a[i].zongfen=a[i].yuwen+a[i].shuxue+a[i].yingyu+a[i].wuli+a[i].huaxue;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
{
a[i].rank=i;
printf("%d ",i);
printf("%s ",a[i].no);
printf("%s %d %d %d %d %d %d\n",a[i].name,a[i].yuwen,a[i].shuxue,a[i].yingyu,a[i].wuli,a[i].huaxue,a[i].zongfen);
}
printf("\n");
int ans=0;info t;
sort(a+1,a+1+n,cmp2);
scanf("%d",&m);
for(int k=1;k<=m;k++)
{
scanf("%s",t.no);
int oi=lower_bound(a+1,a+1+n,t,cmp2)-a;
if(strcmp(a[oi].no,t.no)==0)
{
printf("%d ",a[oi].rank);
printf("%s ",a[oi].no);
printf("%s %d %d %d %d %d %d\n",a[oi].name,a[oi].yuwen,a[oi].shuxue,a[oi].yingyu,a[oi].wuli,a[oi].huaxue,a[oi].zongfen);
}
else
{
printf("Can't found!\n");
}
}
return 0;
}
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
struct info
{
char no[10];
char name[25];
int yuwen;
int shuxue;
int yingyu;
int wuli;
int huaxue;
int zongfen;
int rank;
};
char b[1002];
info a[50005];
int cmp(info a,info b)
{
if(a.zongfen!=b.zongfen)
{
return a.zongfen>b.zongfen;
}
if(a.zongfen==b.zongfen&&a.yuwen!=b.yuwen)
{
return a.yuwen>b.yuwen;
}
if(a.zongfen==b.zongfen&&a.yuwen==b.yuwen&&a.shuxue!=b.shuxue)
{
return a.shuxue>b.shuxue;
}
return strcmp(a.no,b.no)==-1;
};
bool cmp2(info a,info b)
{
return strcmp(a.no,b.no)<0;
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,m;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s",a[i].no);
scanf("%s%d%d%d%d%d",a[i].name,&a[i].yuwen,&a[i].shuxue,&a[i].yingyu,&a[i].wuli,&a[i].huaxue);
a[i].zongfen=a[i].yuwen+a[i].shuxue+a[i].yingyu+a[i].wuli+a[i].huaxue;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
{
a[i].rank=i;
printf("%d ",i);
printf("%s ",a[i].no);
printf("%s %d %d %d %d %d %d\n",a[i].name,a[i].yuwen,a[i].shuxue,a[i].yingyu,a[i].wuli,a[i].huaxue,a[i].zongfen);
}
printf("\n");
int ans=0;info t;
sort(a+1,a+1+n,cmp2);
scanf("%d",&m);
for(int k=1;k<=m;k++)
{
scanf("%s",t.no);
int oi=lower_bound(a+1,a+1+n,t,cmp2)-a;
if(strcmp(a[oi].no,t.no)==0)
{
printf("%d ",a[oi].rank);
printf("%s ",a[oi].no);
printf("%s %d %d %d %d %d %d\n",a[oi].name,a[oi].yuwen,a[oi].shuxue,a[oi].yingyu,a[oi].wuli,a[oi].huaxue,a[oi].zongfen);
}
else
{
printf("Can't found!\n");
}
}
return 0;
}
相关文章推荐
- 【C++心路历程23】求幂的和 分治算法
- 【C++心路历程2】我做不出来二分法 这个题就超时了 好气哦
- 【CQOI2009】【C++心路历程39】叶子的颜色【贪心】
- 【C++心路历程22】usaco contest 08.2 保护花卉 贪心算法 典型模型
- 【C++心路历程27】变量排序
- 【C++心路历程17】Jam的计数法 人为定序法
- 【C++心路历程18】NOIP2016的心路历程
- 【C++心路历程8】mod mod哒
- 【C++心路历程37】钓鱼(刷表法dp)
- 【C++心路历程25】课堂讲义【dp加单调队列】
- 【C++心路历程26】考试复习【尺取法】poj3320
- 【C++心路历程4】vector切记需要注意size
- 【C++心路历程1】
- 【C++心路历程34】【HDU1667】【POJ2286】【UVA1343紫书210例题】the rotation game
- 【C++心路历程35】【bzoj1632】[Usaco2007 Feb]Lilypad Pond
- 【C++心路历程28】 奇葩次小生成树
- 【C++心路历程6】打表大法好 素数没烦恼
- 【C++心路历程5】奇偶排序
- 【C++心路历程16】2825划分游戏 真的有意思 槽点多多
- 【C++心路历程20】干草塔高