CodeForces 534D Program B
Description
On February, 30th n students came in the Center for Training Olympiad Programmers (CTOP) of the Berland State University. They came one by one, one after another. Each of them went in, and before sitting down at his desk, greeted with those who were present in the room by shaking hands. Each of the students who came in stayed in CTOP until the end of the day and never left.
At any time any three students could join together and start participating in a team contest, which lasted until the end of the day. The team did not distract from the contest for a minute, so when another student came in and greeted those who were present, he did not shake hands with the members of the contest writing team. Each team consisted of exactly three students, and each student could not become a member of more than one team. Different teams could start writing contest at different times.
Given how many present people shook the hands of each student, get a possible order in which the students could have come to CTOP. If such an order does not exist, then print that this is impossible.
Please note that some students could work independently until the end of the day, without participating in a team contest.
Input
The first line contains integer n (1 ≤ n ≤ 2·105) — the number of students who came to CTOP. The next line contains n integers a1, a2, ..., an (0 ≤ ai < n), where ai is the number of students with who the i-th student shook hands.
Output
If the sought order of students exists, print in the first line "Possible" and in the second line print the permutation of the students' numbers defining the order in which the students entered the center. Number i that stands to the left of number j in this permutation means that the i-th student came earlier than the j-th student. If there are multiple answers, print any of them.
If the sought order of students doesn't exist, in a single line print "Impossible".
Sample Input
5
2 1 3 0 1
Possible
4 5 1 3 2
9
0 2 3 4 1 1 0 2 2
Possible
7 5 2 1 6 8 3 4 9
4
0 2 1 1
Impossible
- #include <iostream>
- #include <stdio.h>
- #include <string.h>
- #include <stack>
- #include <queue>
- #include <map>
- #include <set>
- #include <vector>
- #include <math.h>
- #include <algorithm>
- using namespace std;
- #define ls 2*i
- #define rs 2*i+1
- #define up(i,x,y) for(i=x;i<=y;i++)
- #define down(i,x,y) for(i=x;i>=y;i--)
- #define mem(a,x) memset(a,x,sizeof(a))
- #define w(a) while(a)
- #define LL long long
- const double pi = acos(-1.0);
- #define Len 63
- #define mod 19999997
- const int INF = 0x3f3f3f3f;
- int n,a[300000],ans[300000],len;
- vector<int> vec[300000];
- int main()
- {
- int i,j,k;
- scanf("%d",&n);
- {
- len = 0;
- up(i,1,n)
- {
- scanf("%d",&a[i]);
- vec[a[i]].push_back(i);
- }
- int now = 0,flag = 1;
- up(i,1,n)
- {
- w(now>=0 && vec[now].size()==0)
- now-=3;
- if(now<0)
- {
- flag = 0;
- break;
- }
- ans[len++] = vec[now].back();
- vec[now++].pop_back();
- }
- if(flag)
- {
- printf("Possible\n");
- printf("%d",ans[0]);
- up(i,1,len-1)
- printf(" %d",ans[i]);
- printf("\n");
- }
- else
- printf("Impossible\n");
- }
- return 0;
- }
CodeForces 534D Program B的更多相关文章
- 【codeforces 534D】Handshakes
[题目链接]:http://codeforces.com/contest/534/problem/D [题意] n个人依次进入一个房间; 进进来的人会和房间里面没有组队的人握一次手; (这里的握手只计 ...
- CodeForces 468A Program F
Description Little X used to play a card game called "24 Game", but recently he has found ...
- CodeForces 540C Program D
Description You play a computer game. Your character stands on some level of a multilevel ice cave. ...
- Codeforce 水题报告(2)
又水了一发Codeforce ,这次继续发发题解顺便给自己PKUSC攒攒人品吧 CodeForces 438C:The Child and Polygon: 描述:给出一个多边形,求三角剖分的方案数( ...
- Codeforces Round #443 (Div. 1) A. Short Program
A. Short Program link http://codeforces.com/contest/878/problem/A describe Petya learned a new progr ...
- Codeforces Round #879 (Div. 2) C. Short Program
题目链接:http://codeforces.com/contest/879/problem/C C. Short Program time limit per test2 seconds memor ...
- Codeforces Round #174 (Div. 1) B. Cow Program(dp + 记忆化)
题目链接:http://codeforces.com/contest/283/problem/B 思路: dp[now][flag]表示现在在位置now,flag表示是接下来要做的步骤,然后根据题意记 ...
- Codeforces Round #443 (Div. 2) C. Short Program
C. Short Program time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- Codeforces 879C/878A - Short Program
传送门:http://codeforces.com/contest/879/problem/C 本题是一个位运算问题——位运算的等价变换. 假设位运算符“&”“|”“^”是左结合的,且优先级相 ...
随机推荐
- 原创: 开题报告中摘要部分快速将一段文字插入到word的表格中
开题报告的摘要是表格形式,之前需要一个一个字的敲入,十分不方便修改. 所以百度了一下方法.现总结如下: 达到的效果 1 将这段文字复制粘贴到word中,在word文件中的每一个字与字之间插入空格.如何 ...
- ionic 原生日历控件不支持,改用 datepicker-for-ionic
具体参考地址 http://npm.taobao.org/package/datepicker-for-ionic
- 让页面滑动流畅得飞起的新特性:Passive Event Listeners
版权声明:本文由陈志兴原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/153 来源:腾云阁 https://www.qclo ...
- java 集合4(迭代器)
迭代器使用要注意的问题: 1.迭代器在遍历元素的时候注意事项: 在迭代器迭代元素的过程中,不准使用集合对象改变集合中的元素个数, 如果要添加或删除要用迭代器的方法. 2.如果使用类集合对象改变集合中的 ...
- object-c NSString 转成特定编码格式如utf8、gbk等
有两种方式 第一种是先转换成特定编码格式NSDATA 第二种是先转换成特定编码格式char *(cString) 转成gbk: 第一种: - (NSString *) utf82gbk:(NSStri ...
- js将long日期格式转换为标准日期格式
<script language="javascript"> //扩展Date的format方法 Date.prototype.format = function (f ...
- bfs 胜利大逃亡
http://acm.hdu.edu.cn/showproblem.php?pid=1253 题目: Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一 ...
- Python中pip版本升级error:You are using pip version 7.1.2, however version 8.1.1 is available.
使用pip install安装命令时,会报错:You are using pip version 7.1.2, however version 8.1.1 is available. 尝试了推荐解决办 ...
- hibernate annotation注解方式来处理映射关系
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式 ...
- 在唯一密钥属性“name”设置为“ScriptHandlerFactory”时,无法添加类型为“add”的重复集合项
出错原因:同一根目录下有两个相同的WebConfig文件 解决办法:删除子其中一个webConfig文件. 详细: