CodeForces
来源:互联网 发布:淘宝网冬季舞靴 编辑:程序博客网 时间:2024/06/05 19:01
A group of n friends enjoys playing popular video game Toda 2. There is a rating system describing skill level of each player, initially the rating of the i-th friend is ri.
The friends decided to take part in the championship as a team. But they should have equal ratings to be allowed to compose a single team consisting of all n friends. So the friends are faced with the problem: how to make all their ratings equal.
One way to change ratings is to willingly lose in some matches. Friends can form a party consisting of two to five (but not more than n) friends and play a match in the game. When the party loses, the rating of each of its members decreases by 1. A rating can't become negative, so ri = 0 doesn't change after losing.
The friends can take part in multiple matches, each time making a party from any subset of friends (but remember about constraints on party size: from 2 to 5 members).
The friends want to make their ratings equal but as high as possible.
Help the friends develop a strategy of losing the matches so that all their ratings become equal and the resulting rating is maximum possible.
The first line contains a single integer n (2 ≤ n ≤ 100) — the number of friends.
The second line contains n non-negative integers r1, r2, ..., rn (0 ≤ ri ≤ 100), where ri is the initial rating of the i-th friend.
In the first line, print a single integer R — the final rating of each of the friends.
In the second line, print integer t — the number of matches the friends have to play. Each of the following t lines should contain ncharacters '0' or '1', where the j-th character of the i-th line is equal to:
- '0', if friend j should not play in match i,
- '1', if friend j should play in match i.
Each line should contain between two and five characters '1', inclusive.
The value t should not exceed 104, it is guaranteed that such solution exists.
Remember that you shouldn't minimize the value t, but you should maximize R. If there are multiple solutions, print any of them.
54 5 1 7 4
180101000011010101001000011110000001111000
21 2
021111
31 1 1
10
#include<bits/stdc++.h>using namespace std;struct node{ int r,id; node(){} node(int r,int id): r(r),id(id){} bool operator < (const node& e)const { return r>e.r; }};int N,r;vector <string> ans;multiset<node> s;int main(){ cin>>N; for(int i=0;i<N;i++) { cin>>r; s.insert(node(r,i)); } while(s.begin()->r!=s.rbegin()->r) { int cnt=2; if(s.count(*s.begin())==3) cnt=3; string buf(N,'0'); vector<node> ar(cnt); for(int i=0;i<cnt;i++) { node p=*s.begin(); s.erase(s.begin()); buf[p.id]='1'; p.r = max(p.r - 1, 0); ar[i]=p; } s.insert(ar.begin(),ar.end()); ans.push_back(buf); } cout<<s.begin()->r<<endl<<ans.size()<<endl; for(int i=0;i<ans.size();i++) cout<<ans[i]<<endl;}
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- WORD公式上浮的对齐的方法
- 分层拓扑排序好题
- Power Strings
- Hadoop 2.X 完全分布式的配置
- memcached操作
- CodeForces
- Unity渲染管线细节(Rendering Pipeline Details)
- 单向链表反转:迭代法和递归法
- 最长递增子序列问题---动态规划
- 面向面试的死锁问题
- App 适配 iOS 11
- 牛客网Java选择题的一些整理
- 栈是顺序存储的线性结构()
- 计算二叉树左叶子的和