zoukankan      html  css  js  c++  java
  • CodeForces

    题目大意

    一个数可以被输出当且仅当所有比它大的数都已经输出。输入一个1~n的排列,求每次输出的输出序列。

    题解

    直接用堆模拟

    #include <queue> 
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    inline void read(int &x){
    	x=0;char ch;bool flag = false;
    	while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;
    	while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
    }
    inline int cat_max(const int &a,const int &b){return a>b ? a:b;}
    inline int cat_min(const int &a,const int &b){return a<b ? a:b;}
    const int maxn = 100000;
    priority_queue<int>q;
    int main(){
    	int n;read(n);
    	int nw = n;
    	for(int i=1,x;i<=n;++i){
    		read(x);
    		if(x == nw){
    			printf("%d",nw--);
    			while(!q.empty()){
    				if(q.top() != nw) break;
    				printf(" %d",nw--);q.pop();
    			}
    		}else q.push(x);
    		putchar('
    ');
    	}
    	getchar();getchar();
    	return 0;
    }
    
  • 相关阅读:
    CSS Modules
    回调地狱
    css实现双色饼图
    vue项目中使用less
    pug(jade) 学习笔记
    React组件proptypes, ref
    react+express实现跨域
    react高阶组件
    Oracle数据库出现锁表情况分析
    JPA常用注解记录
  • 原文地址:https://www.cnblogs.com/Skyminer/p/6417364.html
Copyright © 2011-2022 走看看