zoukankan      html  css  js  c++  java
  • Codeforces 1253B Silly Mistake

    思路:

    按照它的规则检测当前序列是否合法;
    贪心思想,只要办公室没人了就结束这一天;

    代码:

    #define IOS ios::sync_with_stdio(false)
    #include<bits/stdc++.h>
    using namespace std;
    #define pb(a) push_back(a)
    #define rp(i,n) for(int i=0;i<n;i++)
    #define rpn(i,n) for(int i=1;i<=n;i++)
    const int MAX_N=1e6+5;
    int arr[MAX_N];//当天的状态  0未进入 1正在里面 -1已经出来 
    int cnt=0;//正在办公室的人数  events数 
    vector<int> v,emp;
    void clear(){
    	for(auto e:emp) arr[e]=0;
    	emp.resize(0);
    } 
    int main(){
    	IOS;
    	int n;
    	cin>>n;
    	bool flag=true;
    	while(n--){
    		int a;
    		cin>>a;
    		if(a>0){
    			if(arr[a]){flag=false;continue;}
    			arr[a]=1;
    			cnt++;
    		}else{
    			if(arr[-a]==0||arr[-a]==-1){flag=false;continue;}
    			arr[-a]=-1;
    			cnt--;
    			emp.pb(-a);
    			if(cnt==0){
    				v.pb(emp.size()<<1);
    				clear();
    			}
    		}
    	}
    	if(flag&&!cnt){
    		cout<<v.size()<<'
    '<<v[0];
    		for(int i=1;i<v.size();i++) cout<<' '<<v[i];
    	}else cout<<-1;
    	return 0;
    }
    
  • 相关阅读:
    随笔1
    模块
    文件输入流
    一次javaweb登陆实验
    s7八进4
    jdbc连接数据库
    自己找茬
    用栈来求解汉诺塔问题
    用一个栈实现另一个栈的排序
    猫狗队列
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308851.html
Copyright © 2011-2022 走看看