求解答一下为什么运行超时,求指出不足的地方可以提高程序效率。


#include<stdio.h>
#include
using namespace std;
bool cmp(int a,int b)
{
return a>b;}
bool cmp2(int a,int b)
{
return a<b;}
int main()
{
int m;long long n;scanf("%lld%d",&n,&m);long long a[n],b[n];for(int i=0;i<n;i++)a[i]=i+1;for(int i=1;i<=m;i++){int p,q,k,j;scanf("%d%d",&p,&q);if(p){for(k=0,j=q-1;j<n;j++,k++)b[k]=a[j];sort(b,b+k,cmp2);for(int i=0,j=q-1;j<n;j++,i++){a[j]=b[i];}}else{for(int j=0;j<q;j++)b[j]=a[j];sort(b,b+q,cmp);for(int j=0;j<q;j++)a[j]=b[j];}}for(int i=0;i<n;i++)printf("%d ",a[i]); return 0;
}
暴力sort的话数据量大了很容易超时,可以看下这个分析,有详细思路和代码