#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的更多相关文章

  1. Codeforces Round #600 (Div. 2) - B. Silly Mistake(模拟)

    题意:有一个公司,每天有员工进出,$a[i]>0$时表示$a[i]$这个员工进入公司,$a[i]<0$时表示$-a[i]$这个员工出公司,公司对进出办公室有一些严格的规定 员工每天最多只能 ...

  2. 【cf比赛记录】Codeforces Round #600 (Div. 2)

    Codeforces Round #600 (Div. 2) ---- 比赛传送门 昨晚成绩还好,AC A,B题,还能上分(到底有多菜) 补了C.D题,因为昨晚对C.D题已经有想法了,所以补起题来也快 ...

  3. Codeforces Round #600 (Div. 2) E. Antenna Coverage

    Codeforces Round #600 (Div. 2) E. Antenna Coverage(dp) 题目链接 题意: m个Antenna,每个Antenna的位置是\(x_i\),分数是\( ...

  4. B. Silly Mistake Codeforces Round #600 (Div. 2)

    B. Silly Mistake 题目大意: 首先定义有效的一天: 每一个不同的数字只能进去一次,出来一次,正数代表进去,负数代表出来 每一个人不能过夜 不合理: 一个数字只有进去,或者只有出来则是无 ...

  5. Codeforces Round #600 (Div. 2)

    传送门 A. Single Push 直接乱搞即可. Code /* * Author: heyuhhh * Created Time: 2019/11/16 22:36:20 */ #include ...

  6. Codeforces Round #600 (Div. 2)E F

    题:https://codeforces.com/contest/1253/problem/E 题意:给定n个信号源,俩个参数x和s,x代表这个信号源的位置,s代表这个信号源的波及长度,即这个信号源可 ...

  7. Codeforces Round #600 (Div. 2) D题【并查集+思维】

    题意:给你n个点,m条边,然后让你使得这个这个图成为一个协和图,需要加几条边.协和图就是,如果两个点之间有一条边,那么左端点与这之间任意一个点之间都要有条边. 思路:通过并查集不断维护连通量的最大编号 ...

  8. 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[ ...

  9. Codeforces Round #600 (Div. 2) C - Sweets Eating

    #include<iostream> #include<algorithm> #include<cstring> using namespace std ; typ ...

随机推荐

  1. gitlab被屏蔽问题

    There was an error with the reCAPTCHA. Please solve the reCAPTCHA again. 解决办法 俗话说:哪里有碍事的墙,哪里就使劲推好了 h ...

  2. ArcGIS Runtime SDK for Android中SimpleFillSymbol.Style样式

    SimpleFillSymbol.Style样式枚举共8种: 1.BACKWARD_DIAGONAL 反对角线填充 2.CROSS 交叉线填充 3.DIAGONAL_CROSS 前后对角线填充 4.F ...

  3. 吴裕雄--天生自然 R语言数据可视化绘图(2)

    par(ask=TRUE) opar <- par(no.readonly=TRUE) # save original parameter settings library(vcd) count ...

  4. JS中0.1+0.2!=0.3

    在控制台输入0.1+0.2,会得出以下结果 即不等于0.3.下面我们说一下原因. 一.存储原理 1.在计算机中数字无论是定点数还是浮点数都是以多位二进制的方式进行存储的.2.在JS中数字采用的IEEE ...

  5. css背景颜色、背景图片,以及列表的多种样式

    背景样式 • background-color 设置元素的背景颜色.• background-image 把图像设置为背景.• background-position 设置背景图像的起始位置.• ba ...

  6. stream重复Key的处理

    Map<String, List<Model>> modelMap = modelList .stream() .collect(Collectors .toMap(model ...

  7. TC SRM556 OldBridges

    题意 有一个包含\(n\)个点的图,点的编号分别为\(0\)到\(n-1\).有若干双向边连接两个点,有些边可以经过无限次,有些边最多只能经过(双向)两次.Alice计划从\(a1\)到\(a2\)进 ...

  8. netty 的事件驱动

    netty 是事件驱动的,这里面有两个含义,一是 netty 接收到 socket 数据后,会产生事件,事件在 pipeline 上传播,二是事件由特定的线程池处理. NioEventLoop 轮询网 ...

  9. demo Django-基础书籍添加删除(单表)

    小demo使用---- 1.pycharm-2019.2 2.python-3.7.2 3.mysql-5.7.25 4.django-2.2.4 使用过程中的一些注意事项和出现的常见错误的解决地址 ...

  10. js判断苹果安卓操作系统,js更换css

    //判断是哪个操作系统 if(plus.os.name=="Android"){ var lsyshowline=document.getElementById("lsy ...