Codeforces Round #600 (Div. 2) B. Silly Mistake
#include<iostream>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
const int N = 1e7+;
map<int,bool>vis;
set<int>b;
int n,a[N],c[N];
int main() {
scanf("%d",&n);
for(int i = ; i <= n; i++) {
scanf("%d",a+i);
}
int ans = ;
for(int i = ; i <= n; i++) {
if(vis[a[i]]) {//判断是否出现1,1,……-1的情况
printf("-1\n");
return ;
}
vis[a[i]] = true;//标记出现
if(a[i] > ) {//只插入正数
b.insert(a[i]);
} else {//如果为负数
auto it = b.find(-a[i]);//找他的相反数位置
if(it == b.end()) {//如果没有出现过
printf("-1\n");
return ;
}
b.erase(it);//如果出现过,那么可以删除了
}
if(b.size() == && vis.size()) {
c[ans++] = vis.size();
vis.clear();
}
}
if(b.size()) {//到最后如果没有删完,说明有多余的正数
printf("-1\n");
return ;
}
if(ans == ) {//不用拆分数组
printf("1\n%d\n",n);
} else {
printf("%d\n",ans);
for(int i = ; i < ans; i++) {
printf("%d ",c[i]);
}
}
return ;
}
Codeforces Round #600 (Div. 2) B. Silly Mistake的更多相关文章
- Codeforces Round #600 (Div. 2) - B. Silly Mistake(模拟)
题意:有一个公司,每天有员工进出,$a[i]>0$时表示$a[i]$这个员工进入公司,$a[i]<0$时表示$-a[i]$这个员工出公司,公司对进出办公室有一些严格的规定 员工每天最多只能 ...
- 【cf比赛记录】Codeforces Round #600 (Div. 2)
Codeforces Round #600 (Div. 2) ---- 比赛传送门 昨晚成绩还好,AC A,B题,还能上分(到底有多菜) 补了C.D题,因为昨晚对C.D题已经有想法了,所以补起题来也快 ...
- Codeforces Round #600 (Div. 2) E. Antenna Coverage
Codeforces Round #600 (Div. 2) E. Antenna Coverage(dp) 题目链接 题意: m个Antenna,每个Antenna的位置是\(x_i\),分数是\( ...
- B. Silly Mistake Codeforces Round #600 (Div. 2)
B. Silly Mistake 题目大意: 首先定义有效的一天: 每一个不同的数字只能进去一次,出来一次,正数代表进去,负数代表出来 每一个人不能过夜 不合理: 一个数字只有进去,或者只有出来则是无 ...
- Codeforces Round #600 (Div. 2)
传送门 A. Single Push 直接乱搞即可. Code /* * Author: heyuhhh * Created Time: 2019/11/16 22:36:20 */ #include ...
- Codeforces Round #600 (Div. 2)E F
题:https://codeforces.com/contest/1253/problem/E 题意:给定n个信号源,俩个参数x和s,x代表这个信号源的位置,s代表这个信号源的波及长度,即这个信号源可 ...
- Codeforces Round #600 (Div. 2) D题【并查集+思维】
题意:给你n个点,m条边,然后让你使得这个这个图成为一个协和图,需要加几条边.协和图就是,如果两个点之间有一条边,那么左端点与这之间任意一个点之间都要有条边. 思路:通过并查集不断维护连通量的最大编号 ...
- Codeforces Round #600 (Div. 2) D。 Harmonious Graph
#include<iostream> using namespace std ; ; int p[N]; int cnt; int find(int x) { if(p[x]!=x) p[ ...
- Codeforces Round #600 (Div. 2) C - Sweets Eating
#include<iostream> #include<algorithm> #include<cstring> using namespace std ; typ ...
随机推荐
- 0.5 Linux的联通性命令汇总
linux下网络端口连通性测试命令汇总 一.telnet ip port 1.1 安装: 安装telnet服务 [centos.ubuntu]安装telnet命令的方法.] yum list teln ...
- shell脚本监测进程并重启
本人实例: #!/bin/bash ps -ef | grep elastic | grep -v grepif [ $? -ne 0 ]thenecho "start process... ...
- OSI七层协议大白话解读
参考链接:https://www.cnblogs.com/zx125/p/11295985.html 国际标准化组织(ISO)制定了osi七层模型,iso规定了各种各样的协议,并且分了7层 应用层 应 ...
- 初识Socket通讯编程(一)
一.什么是socket? 当两台计算机需要通信的时候,往往我们使用的都是TCP去实现的,但是并不会直接去操作TCP协议,通常是通过Socket进行tcp通信.Socket是操作系统提供给开发者的一个接 ...
- P1339 [USACO09OCT]热浪Heat Wave(SPFA)
-------------------------------------- 农夫约翰再显神威,双向热浪,双倍数组 (双倍大小,否则RE) ------------------------------ ...
- LCT[Link-Cut-Tree学习笔记]
部分摘抄于 FlashHu candy99 所以文章篇幅较长 请有足够的耐心(不是 其实不用学好splay再学LCT的-/kk (至少现在我平衡树靠fhq) 如果学splay的话- 也许我菜吧-LCT ...
- python读取mongodb并提供接口
# -*- coding: utf-8 -*- import flask, json import time import pymongo client=pymongo.MongoClient(hos ...
- 阿里面试Java程序员都问些什么?
刚开始也是小白,也是一步步成成起来的.需要提的一点是,你将来是需要靠这个吃饭的,所以请对找工作保持十二分的热情,而且越早准备越好. 阿里一面 一面是在上午9点多接到支付宝的面试电话的,因为很期望能够尽 ...
- 如何调试TaskPaper的JavaScript上下文?
Mac 上的纯文本 GTD 工具TaskPaper for Mac(纯文本任务管理器)是一款适用于Mac操作系统的软件.如何调试TaskPaper的JavaScript上下文?[dl]15-1068[ ...
- Django-模型(二)
条件查询 字段查询 实现sql中where的功能,调用过滤器filter().exclude().get(),下面以filter()为例. 通过"属性名_id"表示外键对应对象的i ...