cf-379C

来源:互联网 发布:淘宝网红店铺排行榜 编辑:程序博客网 时间:2024/06/18 06:18
技巧题:给出一串的数字,比如5 1 1,输出不能包含重复的数字而且总和尽量小的串。
解法:用排序,排完之后遍历,比较目前值和前一个的值+1的大小。取大的数字
#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include <string>#include <set>#include <functional>#include <numeric>#include <sstream>#include <stack>#include <map>#include <queue>using namespace std;pair<long long ,long long> num[300010];long long ans[300010];int main(){long long n;cin >> n;for(int i=0;i<n;i++){cin >> num[i].first;num[i].second=i;}sort(num,num+n);for(int i=1;i<n;i++)num[i].first = max(num[i].first,num[i-1].first+1);for(int i=0;i<n;i++)ans[num[i].second]=num[i].first;for(int i=0;i<n;i++)i==0?cout<<ans[i]:cout<<" "<<ans[i];cout<<endl;return 0;}

0 0