天天看點

【stable_sort穩定排序】

今天刷ural的1100才發現原來有這麼一個神奇的DD——stable_sort,作用是若有多個值,根據第三個參數來排序而不改變其他值的出現次序。。。呃,比較難明,自己慢慢體會吧

http://acm.timus.ru/problem.aspx?space=1&num=1100

#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <string.h>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <limits.h>

using namespace std;

#define LL long long
#define pi acos(-1)
#define N  150010
#define INF INT_MAX
#define eps 1e-8
//*********************************************
//ural 1100
//*********************************************

struct node
{
    int id;
    int val;
}e[N];
bool cmp(node a,node b)
{
    return a.val>b.val;
}
int main()
{
    //freopen("a.txt","r",stdin);
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int i,j;
        for(i=0;i<n;i++)
        scanf("%d%d",&e[i].id,&e[i].val);
        stable_sort(e,e+n,cmp);//穩定排序,若相同,則不改變其出現順序
        for(i=0;i<n;i++)
        printf("%d %d\n",e[i].id,e[i].val);
    }
    return 0;
}
           

繼續閱讀