Codeforces Round #344 (Div. 2) C. Report
来源:互联网 发布:苹果电脑如何装windows 编辑:程序博客网 时间:2024/05/16 10:16
题意:
给你一个长度为n的初始的序列和q个操作((1 ≤ n,q ≤ 200000),一个操作包括ti和ri,ti为1表示从小到大,ti为2表示从大到小,ri表示对前面多少个进行排序。
思路:如果后面的操作长度比前面的长度要大,那么可以知道前面的操作便是无效的,那么如果前面的操作是有效的话,他比后面操作最大的序列长度要大,那么他比后面的最大的序列长度大的那一部分便可以直接确定了,因为有效的操作序列一定是单调递减的。
#include <map>#include <set>#include <stack>#include <queue>#include <cmath>#include <ctime>#include <vector>#include <cstdio>#include <cctype>#include <cstring>#include <cstdlib>#include <iostream>#include <algorithm>using namespace std;#define INF 0x3f3f3f3f#define inf -0x3f3f3f3f#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define mem0(a) memset(a,0,sizeof(a))#define mem1(a) memset(a,-1,sizeof(a))#define mem(a, b) memset(a, b, sizeof(a))const int M=1e9+7;const int maxn=200100;int a[maxn];bool cmp(int x,int y){ return x>y;}struct node{ int op; int id;}line[maxn];int num[maxn];int C[maxn];int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF){ for(int i=1;i<=n;i++) scanf("%d",&a[i]); int minv=0; for(int i=1;i<=m;i++){ scanf("%d%d",&line[i].op,&line[i].id); minv=max(line[i].id,minv); } int maxv=0; for(int i=m;i>=1;i--){ num[i]=maxv; maxv=max(maxv,line[i].id); } for(int i=1;i<=maxv;i++) C[i]=a[i]; int st=1,ed=maxv; sort(C+1,C+maxv+1); for(int i=1;i<=m;i++){ if(line[i].id<=num[i]) continue; if(line[i].op==1){ //xiao dao da int j,k; for(j=0;line[i].id-j>num[i];j++){ a[line[i].id-j]=C[ed]; ed--; } } else{ //da dao xiao int j; for(j=0;line[i].id-j>num[i];j++){ a[line[i].id-j]=C[st]; st++; } } } for(int i=1;i<=n;i++){ if(i==1) printf("%d",a[i]); else printf(" %d",a[i]); } printf("\n"); } return 0;}
0 0
- Codeforces Round #344 (Div. 2) C. Report
- Codeforces Round #344 (Div. 2) C. Report
- Codeforces Round #344 (Div. 2) C. Report
- Codeforces Round #344 (Div. 2)C. Report
- Codeforces Round #344 (Div. 2) C. Report
- Codeforces Round #344 (Div. 2) 631C Report(脑洞+stl)
- Codeforces Round #344 (Div. 2) C. Report【水题】
- Codeforces Round #344 (Div. 2) C. Report (脑洞题)
- Codeforces Round #344 (Div. 2)-C. Report(单调栈)
- Codeforces Round #344 (Div. 2) C. Report (题解)
- Codeforces Round #343 (Div. 2) C. Report (乱搞)
- Codeforces Round #344 (Div. 2) C - Report 遇到排序什么的就是无尽的蛋疼
- 【codeforces】Codeforces Round #370 (Div. 2) C
- Codeforces Round #344 (Div. 2)
- Codeforces Round #344 (Div. 2)
- Codeforces Round #200 (Div. 2)344C Rational Resistance(模拟)
- Codeforces Round #105 (Div. 2) C
- Codeforces Round 134 div 2 C题
- 图——邻接矩阵
- C++_Primer 15.8 句柄类与继承
- [翻译]A Topic Model for Melodic Sequences
- Android笔记之pagerAdapter两个子类的区别和选用
- RadioGroup内兼容任何布局
- Codeforces Round #344 (Div. 2) C. Report
- Spring-在IDEA2016中创建maven管理的SpringMVC项目
- 表空间、用户及其权限的相关SQL语句
- C#
- Java基础知识
- android之Android Studio下自定义属性的定义和使用
- 高精度乘法 FFT
- 详解如何安装64位win7系统
- 如何提高数据库性能