a309 排序:sort

 

 

//1044 【入门】编程输入10个正整数,然后自动按从大到小的顺序输出 

#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){return a>b;}//自定义规则
  
int main(){
    int i,a[20],n=10;
    for(i=0;i<n;i++)scanf("%d",&a[i]);
    sort(a,a+n,cmp);
    for(i=0;i<n-1;i++)printf("%d ",a[i]);
    printf("%d\n",a[n-1]);
    return 0;
}

  

  

 自定义规则排序

//1245 【USACO】混合牛奶

【格式1】 

#include<cstdio>
#include<algorithm>
using namespace std;
struct FM{int p,V;}a[5010];
bool cmp(FM a,FM b){return a.p<b.p;}//自定义排序规则
  
int main(){
    int n,m,i,x=0;
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++)scanf("%d%d",&a[i].p,&a[i].V);
    sort(a+1,a+m+1,cmp);
    for(i=1;i<=m;i++){
        x+=a[i].p*min(n,a[i].V);
        n=n-a[i].V;
        if(n<=0)break;
    }
    printf("%d\n",x);
    return 0;
}

  

 【格式2】

 

#include<algorithm>
using namespace std;
struct FM{
    int p,V;  //下行是自定义排序规则
    bool operator <(const FM& b)const{return p<b.p;}
}a[5010];
  
int main(){
    int n,m,i,x=0;
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++)scanf("%d%d",&a[i].p,&a[i].V);
    sort(a+1,a+m+1);
    for(i=1;i<=m;i++){
        x+=a[i].p*min(n,a[i].V);
        n=n-a[i].V;
        if(n<=0)break;
    }
    printf("%d\n",x);
    return 0;
}

 

  

 

样例输入

100 5
5 20
9 40
3 10
8 80
6 30

样例输出
630

 

 

 

yyoj1127 分数线确定(line)

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[1000005];
bool cmp(const int& a,const int& b){return a>b;}
int main(){
    int n,i,k,f,r;
    scanf("%d%d",&n,&k);
    for(i=0;i<n;i++)scanf("%d",&a[i]);
    sort(a,a+n,cmp);
    f=a[k-1];r=k;
    for(i=k;i<n;i++)if(a[i]==f)r++;
    printf("%d %d\n",f,r);
    return 0;
}

  

 

posted @ 2016-04-30 01:48  codeisking  阅读(1248)  评论(0)    收藏  举报