HDU 4070 定义结构体使用sort进行排序

今天参加ACM集训,选的题目里就有杭电上的4070这道题目。排序的时候我用的冒泡排序。定义了一个行数为n(100010),列数为2的二维数组。把数组按照每一行的第二个数从大到小排序(第一个数跟着交换顺序)。最后提交是超时的。后来,想到了快速排序。但是不太熟悉快速排序。看了别人的代码以后。定义了一个结构体,然后用sort()函数排序。提交后,判断为正确。

下面是此题的代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstdlib>
 4 #include<algorithm>
 5 using namespace std;
 6 const int maxn = 100010;
 7 struct node
 8 {
 9 int num,ti;
10 }cell[maxn];
11 int cmp(const node &a,const node &b )
12 {
13 return a.ti > b.ti;
14 }
15 int main()
16 {
17 int t,k,i,j,s,m,sum,n;
18 cin>>t;
19 for(k=1;k<=t;k++){
20 cin>>n;
21 for(i=0;i<n;i++){
22 cin>>cell[i].num>>cell[i].ti;
23 }
24 sort(cell,cell+n,cmp);
25 s=0;m=0;sum=0;
26 for(i=0;i<n;i++){
27 s=cell[i].ti+cell[i].num+m;
28 if(s>sum) sum=s;
29 m+=cell[i].num;
30 }
31 printf("Case %d: %d\n",k,sum);
32 }
33 return 0;
34 }

 

 

 

posted @ 2014-04-06 16:13  pengmq  阅读(267)  评论(0)    收藏  举报