Python:双向排序

题目描述

给定序列 (a1​,a2​,⋅⋅⋅,an​)=(1,2,⋅⋅⋅,n),即 ai​=i。

小张将对这个序列进行 m 次操作,每次可能是将 a1​,a2​,⋯,aqi​​ 降序排列,或者将 aqi​​,aqi+1​​,⋯,an​ 升序排列。

请求出操作完成后的序列。

输入描述

输入的第一行包含两个整数 n,m​,分别表示序列的长度和操作次数。

接下来 m​ 行描述对序列的操作,其中第 i 行包含两个整数 pi​,qi​​ 表示操作类型和参数。当 pi​=0​​ 时,表示将 1,2,⋅⋅⋅,a1​,a2​,⋅⋅⋅,aqi​​​​ 降序排列;当 pi​=1​ 时,表示将 aqi​​,aqi+1​​,⋯,an​​ 升序排列。

输出描述

输出一行,包含 n 个整数,相邻的整数之间使用一个空格分隔,表示操作完成后的序列。

输入输出样例

示例

输入

3 3
0 3
1 2
0 2

输出

3 1 2

样例说明

原数列为 (1,2,3)​​​​​。

第 1​​​​​ 步后为 (3,2,1)​​​​​。

第 2​​​​ 步后为 (3,1,2)​​。

第 3​​​ 步后为 (3,1,2)​。与第 2 步操作后相同,因为前两个数已经是降序了。

评测用例规模与约定

对于 30% 的评测用例,n,m≤1000;

对于 60% 的评测用例,n,m≤5000;

对于所有评测用例,1≤n,m≤100000,0≤pi​≤1,1≤qi​≤n。

参考代码:

n,m=map(int,input().split())
a=[i for i in range(1,n+1)]   #生成序列
for i in range(m):
  p,q=map(int,input().split())
  if p==0:                
    c=a[:q]               #拷贝出来
    c.sort(reverse=True)  #排序
    a[:q]=c               #拷贝回去
  else:
    b=a[q-1:n]
    b.sort()
    a[q-1:n]=b
for i in a:  
  print(i,end=' ')

上述代码只能通过60%的样例测试

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的敲码工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值