洛谷魔法照片题解

#include<algorithm>
using namespace std;
int extra[11],initial[20001],order[20001];
bool cmp(int a,int b)
{   
    if(initial[a]==initial[b])	return a<b;//从大到小排序 
    else	return initial[a]>initial[b];//序号小优先
}
 
int main()
{
    
    int n,k;
    int i;
    
    cin>>n>>k;
    for(i=1;i<=10;i++)	cin>>extra[i];
    for(i=1;i<=n;i++)	
    {
        cin>>initial[i];
        order[i]=i;
    }
 
    sort(order+1,order+n+1,cmp);//第一次排序
    for(i=1;i<=n;i++)//分类处理
        	initial[order[i]]+=extra[(i-1)%10+1];
    sort(order+1,order+n+1,cmp);//第二次排序
    
    for(i=1;i<=k;i++)
    	cout<<order[i]<<" ";
    cout<<endl;
    	
    return 0;
}

做了下魔法照片,本来是想用vector去做的,但是发现有些麻烦,现在还是离不开数组。
这道题做得时候是有思路的,我的想法是二维数组和结构体直接上,后来发现题解中有用sort去做;
思路比较特别,深思。
原文地址:https://www.cnblogs.com/lwt99/p/13996193.html