P1583 魔法照片 洛谷 (C++)(結構體排序)
阿新 • • 發佈:2018-12-12
基本步驟就是先按照weight排一次序,再按增加了額外的權值後再排一次序就好了,注意對應關係,簡單的結構體排序。
#include <iostream> #include <cmath> #include <stdio.h> #include <cstring> #include <algorithm> #include <cstring> using namespace std; int extra[15] ; typedef struct{ int weight ; int number ; }meassage ; bool cmp( meassage a , meassage b ){ if ( a.weight == b.weight ){ return a.number < b.number ; } return a.weight > b.weight ; } int main(){ int n , k ; cin >> n >> k ; meassage mea[n+10] ; for ( int i = 0 ; i < 10 ; i ++ ){ cin >> extra[i] ; } for ( int i = 0 ; i < n ; i ++ ){ cin >> mea[i].weight ; mea[i].number = i + 1 ; } sort(mea , mea + n , cmp) ; for ( int i = 0 ; i < n ; i ++ ){ mea[i].weight += extra[i % 10] ; } sort(mea , mea + n , cmp) ; for ( int i = 0 ; i < k ; i ++ ){ cout << mea[i].number << " "; } return 0 ; }