CodeForces 379C -- D - New Year Ratings Change

来源:互联网 发布:验证yum源修改 编辑:程序博客网 时间:2024/05/27 06:50

学长们说是签到题难度,瞬间就心凉了!

大体题意:

给你一个n,代表有n个人,没个人想要至少a[i]分数,但分配分数又要各不相同!求最后结果!

思路:

向舍友学习了一下方法!自己做总超时!

建立一个结构体,记录id编号,和初始值!

刚上来先按初始值排序!

然后从i = 1 到 i = n-1 遍历 发现比前一个小,就变为前一个的加1

最后在按编号排序输出答案就行了!

#include<cstdio>#include<cstring>#include<string>#include<algorithm>using namespace std;const int maxn = 300000 + 10;struct rating{int id,beg;}rat[maxn];bool cmp1(const rating&a,const rating &b){return a.beg < b.beg;}bool cmp2(const rating&a,const rating &b){return a.id < b.id;}int main(){int n;while(scanf("%d",&n) == 1){for (int i = 0; i < n; ++i){scanf("%d",&rat[i].beg);rat[i].id = i;}sort(rat,rat+n,cmp1);for (int i = 1; i < n; ++i){if (rat[i].beg <= rat[i-1].beg)rat[i].beg = rat[i-1].beg+1;}sort(rat,rat+n,cmp2);for (int i = 0 ;i < n; ++i){if (i)printf(" ");printf("%d",rat[i].beg);}printf("\n");}return 0;}


0 0