Avito Cool Challenge 2018-B. Farewell Party(思维)
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Chouti and his classmates are going to the university soon. To say goodbye to each other, the class has planned a big farewell party in which classmates, teachers and parents sang and danced.
Chouti remembered that nn persons took part in that party. To make the party funnier, each person wore one hat among nn kinds of weird hats numbered 1,2,…n1,2,…n. It is possible that several persons wore hats of the same kind. Some kinds of hats can remain unclaimed by anyone.
After the party, the ii-th person said that there were aiai persons wearing a hat differing from his own.
It has been some days, so Chouti forgot all about others' hats, but he is curious about that. Let bibi be the number of hat type the ii-th person was wearing, Chouti wants you to find any possible b1,b2,…,bnb1,b2,…,bn that doesn't contradict with any person's statement. Because some persons might have a poor memory, there could be no solution at all.
Input
The first line contains a single integer nn (1≤n≤1051≤n≤105), the number of persons in the party.
The second line contains nn integers a1,a2,…,ana1,a2,…,an (0≤ai≤n−10≤ai≤n−1), the statements of people.
Output
If there is no solution, print a single line "Impossible".
Otherwise, print "Possible" and then nn integers b1,b2,…,bnb1,b2,…,bn (1≤bi≤n1≤bi≤n).
If there are multiple answers, print any of them.
Examples
input
Copy
3
0 0 0
output
Copy
Possible
1 1 1
input
Copy
5
3 3 2 2 2
output
Copy
Possible
1 1 2 2 2
input
Copy
4
0 1 2 3
output
Copy
Impossible
Note
In the answer to the first example, all hats are the same, so every person will say that there were no persons wearing a hat different from kind 11.
In the answer to the second example, the first and the second person wore the hat with type 11 and all other wore a hat of type 22.
So the first two persons will say there were three persons with hats differing from their own. Similarly, three last persons will say there were two persons wearing a hat different from their own.
In the third example, it can be shown that no solution exists.
In the first and the second example, other possible configurations are possible.
题解:看分了几组,假如说有很多人说了有a个人和自己不同,那么就有n-a个人和自己是一组。
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct node
{
int id,val;
}p[100005];
bool cmp(node x,node y)
{
return x.val<y.val;
}
int ans[100005];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
p[i].id=i;
scanf("%d",&p[i].val);
}
sort(p+1,p+n+1,cmp);
//for(int t=1;t<=n;t++)
//{
//cout<<p[t].val<<" "<<p[t].id<<endl;
//}
int last = 1;
long long int sum=0;
int cnt=0;
while(1)
{
int t=last+(n-p[last].val)-1;
if(p[t].val==p[last].val)
{
cnt++;
for(int j=last;j<=t;j++)
{
ans[p[j].id]=cnt;
}
sum+=(n-p[last].val);
last=t+1;
if(t==n)break;
}
else{
printf("Impossible\n");
return 0;
}
}
if(sum!=n)
{
printf("Impossible\n");
}
else
{
printf("Possible\n");
for(int i=1;i<=n;i++)
{
printf("%d ",ans[i]);
}
}
return 0;
}
Avito Cool Challenge 2018-B. Farewell Party(思维)的更多相关文章
- Avito Cool Challenge 2018 B. Farewell Party 【YY】
传送门:http://codeforces.com/contest/1081/problem/B B. Farewell Party time limit per test 1 second memo ...
- Avito Cool Challenge 2018 B - Farewell Party
题目大意: 有n个人 接下来一行n个数a[i] 表示第i个人描述其他人有a[i]个的帽子跟他不一样 帽子编号为1~n 如果所有的描述都是正确的 输出possible 再输出一行b[i] 表示第i个人的 ...
- Codeforces Avito Code Challenge 2018 D. Bookshelves
Codeforces Avito Code Challenge 2018 D. Bookshelves 题目连接: http://codeforces.com/contest/981/problem/ ...
- Avito Cool Challenge 2018
考挂了.. A - Definite Game 直接看代码吧. #include<cstdio> #include<cstring> #include<algorithm ...
- Avito Cool Challenge 2018(div1+2)
A. Definite Game: 题意:输入N,输出最小的结果N-x,其中x不少N的因子. 思路:N=2时,输出2:其他情况输出1:因为N>2时,N-1不会是N的因子. #include< ...
- Avito Cool Challenge 2018 Solution
A. Definite Game 签. #include <bits/stdc++.h> using namespace std; int main() { int a; while (s ...
- Avito Cool Challenge 2018 A. B题解
A. Definite Game 题目链接:https://codeforces.com/contest/1081/problem/A 题意: 给出一个数v,然后让你可以重复多次减去一个数d,满足v% ...
- Avito Code Challenge 2018
第一次打CF,很菜,A了三道水题,第四题好像是是数位DP,直接放弃了.rateing从初始的1500变成了1499,还是绿名,这就很尴尬.之后觉得后面的题目也没有想象的那么难(看通过人数)过两天吧剩下 ...
- Avito Cool Challenge 2018 自闭记
A:n==2?2:1. #include<iostream> #include<cstdio> #include<cmath> #include<cstdli ...
- Avito Cool Challenge 2018 E. Missing Numbers 【枚举】
传送门:http://codeforces.com/contest/1081/problem/E E. Missing Numbers time limit per test 2 seconds me ...
随机推荐
- Nginx均衡负载配置
前言:Nginx也是一种服务器,反向代理服务器.单一tomcat能承受的并发访问量在150-200之间,还是在比较理想的情况下,当并发量超出这个范围,便需要Nginx实现多个tomcat的均衡负载,但 ...
- linux命令学习笔记(54):ping命令
Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器, 看是不是开着”.不能打开网页时会说“你先ping网关地址192.168.1.1试试” ...
- PHP中读写文件
在PHP中读写文件,可以用到一下内置函数: 1.fopen(创建文件和打开文件) 语法: 复制代码代码如下:fopen(filename,mode) filename,规定要打开的文件.mode,打开 ...
- linux网络编程 gethostbyname()
gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针.结构的声明与gethostaddr()中一致. 返回对应于给定主机名的主机信息. #include ...
- HTml js 生成图片
<script type="text/javascript"> function $(id) { return document.getElementById(id); ...
- P4311 士兵占领[最大流]
题目地址 有一个$M * N$的棋盘,有的格子是障碍.现在你要选择一些格子来放置一些士兵,一个格子里最多可以放置一个士兵,障碍格里不能放置士兵.我们称这些士兵占领了整个棋盘当满足第i行至少放置了$L_ ...
- poj 2559 最大矩形面积(单调栈)
题目:输入一个整数n,代表有n个 1(宽度) * h[i](高度)的矩形.接下来n个数依次给定一个矩形高度的高度h[i](i<=n). 求:在给定的依次排列的这堆矩形构成的图形里用一个矩形圈出 ...
- 《c# 实现p2p文件分享与传输系统》 一、 模型
c#实现P2P文件分享与传输系统 一.模型 P2P的概念大家都不陌生,也就是所谓的“点对点传输”,即不直接通过服务器,在两台或多台客户端之间传输数据,实现信息交流和资源共享.P2P技术已经发展了很多年 ...
- Key and Certificate Conversion
Key and Certificate Conversion Private keys and certificates can be stored in a variety of formats, ...
- Laravel框架接入短信平台进行用户注册短信验证
今天刚接触了一个短信接口平台,云通讯第三方短信提供服务商.http://www.yuntongxun.com/ 然后介绍一下怎么使用该短信平台来接入到自己的项目中. 首先你的去注册一个账号,然后根据提 ...