codeforces 631C. Report
2016-03-04 13:11
344 查看
42 1243 23 12 递减的数列就是320,操作的时候,先变[3,2),然后变[2,0),具体的过程看代码。
#include<iostream>
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
#include<string>
#include<queue>
#include<stack>
#include<bitset>
usingnamespacestd;
#definepb(x)push_back(x)
#definelllonglong
#definemk(x,y)make_pair(x,y)
#definelsonl,m,rt<<1
#definemem(a)memset(a,0,sizeof(a))
#definersonm+1,r,rt<<1|1
#definemem1(a)memset(a,-1,sizeof(a))
#definemem2(a)memset(a,0x3f,sizeof(a))
#definerep(i,n,a)for(inti=a;i<n;i++)
#definefifirst
#definesesecond
typedefpair<int,int>pll;
constdoublePI=acos(-1.0);
constdoubleeps=1e-8;
constintmod=1e9+7;
constintinf=1061109567;
constintdir[][2]={{-1,0},{1,0},{0,-1},{0,1}};
constintmaxn=2e5+5;
intst[200005],a[maxn],b[maxn],c[maxn];
intmain()
{
intn,m,sign,pos;
cin>>n>>m;
for(inti=1;i<=n;i++)
scanf("%d",&a[i]);
intr=0;
for(inti=0;i<m;i++){
scanf("%d%d",&sign,&pos);
while(r>0&&pos>=st[r-1])
r--;
st[r]=pos,b[r]=sign;
r++;
}
st[r++]=0;
intl=1,rr=st[0];
for(inti=1;i<=n;i++)
c[i]=a[i];
sort(c+1,c+1+rr);
for(inti=1;i<r;i++){
for(intj=st[i-1];j>st[i];j--){
a[j]=(b[i-1]==2)?c[l++]:c[rr--];
}
}
for(inti=1;i<=n;i++)
printf("%d",a[i]);
return0;
}
相关文章推荐
- ZOJ 1654 Place the Robots
- Jetty和Tomcat的选择:按场景而定
- Leetcode #1 Two Sum 解题小结
- leetcoede之Patching Array
- How To Create a SSL Certificate on Apache for Debian 7 |htttps
- Hue安装配置实践
- 更好的内存管理-jemalloc
- iOS推送开关
- How To Create a SSL Certificate on Apache for Debian 8 htttps
- 成都Uber优步司机奖励政策(3月4日)
- 【转载】java版打字练习软件
- 【iCore3 双核心板_FPGA】例程五:Signal Tapll实验——逻辑分析仪
- linux加载mod初学
- jsp基本语法总结
- Swift - 使用CoreLocation获取设备方向(真实方向,磁极方向)(转帖)
- Eclipse包文件里面的全部替换
- 解析几何:第四章 空间中的直线与平面(2)空间中点到直线、平面的距离、平面之间的关系、直线与直线、直线与平面的相互关系
- 最适合程序员加班吃的6大营养美食
- 先精深,后博大。
- STL_算法_04_算术和生成算法