CodeForces 722D Generating Sets 贪心+Set

来源:互联网 发布:怎么样做淘宝服装模特 编辑:程序博客网 时间:2024/06/05 11:40

从当前集合中选取最大的元素进行/2的操作,每次操作后如果集合中没有这个元素了就放下,继续找最大的.
如果一个元素被除到了0说明这个元素不能再减小了,则这个元素应该就是最后集合中最大的元素.

#include<bits/stdc++.h>using namespace std;set<int> S;set<int>::iterator it;int N,temp;int main(){    cin.sync_with_stdio(false);    cin>>N;    for (int i=1;i<=N;i++)    {        cin>>temp;        S.insert(temp);    }    while (true)    {        it=S.end();        it--;        int p=*it;        while (S.find(p)!=S.end()&&p)            p>>=1;        if (p==0)            break;        S.erase(it);        S.insert(p);    }    for (it=S.begin();it!=S.end();it++)        cout<<*it<<' ';    return 0;}
0 0