为啥TLE20???

9. 双关键字排序

题目ID:3590必做题100分

最新提交:

Compile Error

0 分

历史最高:

Time Limit Exceeded

20 分

时间限制: 1000ms

空间限制: 131072kB

题目描述

时间:1s 空间:32M

题目描述:

给你n对数,把它们先按照第一个数的升序排序,如果第一个数相等就按照第二个数的升序排序。

输入格式:

第一行输入一个整数�n

接下来�n行每行输入两个整数��,��ai​,bi​

输出格式:

按照升序输出所有整数对

样例输入:

3 1 3 1 2 2 3

样例输出:

1 2 1 3 2 3

约定:

1<=�<=100000,1<=��,��<=1000001<=n<=100000,1<=ai​,bi​<=100000

提示:

我的代码:

#include<bits/stdc++.h>
using namespace std;
int a[100005][2],n;
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i][0]>>a[i][1];
	}
    for(int j=0;j<n-1;j++){
    	for(int i=0;i<n-j-1;i++){
    		if(a[i][0]>a[i+1][0]){
    			swap(a[i][0],a[i+1][0]);
    			swap(a[i][1],a[i+1][1]);
    		}else if(a[i][0]==a[i+1][0]){
    			if(a[i][1]>a[i+1][1]){
    				swap(a[i][0],a[i+1][0]);
    				swap(a[i][1],a[i+1][1]);				
    			}
    		}
    	}
    }
	for(int i=0;i<n;i++){
		cout<<a[i][0]<<" "<<a[i][1]<<endl;
	}
}

有啥好改进的?

O(n^2)包超时的,可以直接用sort或者计数

这个sort怎么搞


/**
   *  @brief Sort the elements of a sequence.
   *  @ingroup sorting_algorithms
   *  @param  __first   An iterator.
   *  @param  __last    Another iterator.
   *  @return  Nothing.
   *
   *  Sorts the elements in the range @p [__first,__last) in ascending order,
   *  such that for each iterator @e i in the range @p [__first,__last-1),  
   *  *(i+1)<*i is false.
   *
   *  The relative ordering of equivalent elements is not preserved, use
   *  @p stable_sort() if this is needed.
  */
  template<typename _RandomAccessIterator>
    inline void
    sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
    {
      // concept requirements
      __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
	    _RandomAccessIterator>)
      __glibcxx_function_requires(_LessThanComparableConcept<
	    typename iterator_traits<_RandomAccessIterator>::value_type>)
      __glibcxx_requires_valid_range(__first, __last);
      __glibcxx_requires_irreflexive(__first, __last);

      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());
    }

这啥玩意

搜‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

核心代码 结构体

bool cmp(const data & a,const data & b)
{
    if(a.a==b.a) return a.b<b.b;
    else return a.a<b.a;
}

干啥啊,过了两周就不要回复了