博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforce344 C report
阅读量:5145 次
发布时间:2019-06-13

本文共 1113 字,大约阅读时间需要 3 分钟。

  这个题就是给你n个数, 然后给你m个t和r的序列t的取值是1或者2, 当为1的时候表示将n个数的前r个数升序排列, 当为2的时候表示将前n个数降序排列, 问你这m个操作后的序列是多少?首先可以肯定的是如果后面有个操作r大于前面的r那么前面的操作就可以忽略,根据这个性质我们可以将这m个操作变为按照r降序的操作然后在执行相应的操作, 具体操作见代码。

#include 
#include
#include
#include
using namespace std;typedef pair
pii;int n, m;int ai[200000 + 100];vector
v;int main(){ scanf("%d%d", &n, &m); for(int i=1; i<=n; i++) scanf("%d", &ai[i]); for(int i=0; i
0 && v.back().second<=r) v.pop_back(); v.push_back((pii){t, r}); } vector
ans; for(int i=n; i>v[0].second; i--) ans.push_back(ai[i]); n = v[0].second; sort(ai+1, ai+1+n); int s = 1; for(int i=0; i+1
=n-(r1-r2)+1; j--) ans.push_back(ai[j]); n -= r1-r2; } else { for(int j=s; j<=s+(r1-r2)-1; j++) ans.push_back(ai[j]); s += r1-r2; } } int m = v.size()-1; if(v[m].first==1) for(int j=n; j>=s; j--) ans.push_back(ai[j]); else for(int j=s; j<=n; j++) ans.push_back(ai[j]); for(int i=ans.size()-1; i>=0; i--) printf("%d%c", ans[i], i==0?'\n':' '); return 0;}

 

转载于:https://www.cnblogs.com/xingxing1024/p/5243907.html

你可能感兴趣的文章
导航,头部,CSS基础
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
面试时被问到的问题
查看>>
当前记录已被另一个用户锁定
查看>>
Node.js 连接 MySQL
查看>>
那些年,那些书
查看>>
注解小结
查看>>
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>
转载 C#文件中GetCommandLineArgs()
查看>>
list control控件的一些操作
查看>>
绝望的第四周作业
查看>>
一月流水账
查看>>
npm 常用指令
查看>>
判断字符串在字符串中
查看>>