2AC,8TLE
御坂正在玩一个电脑游戏。他的角色正在杀死一些怪物。有n个怪物,编号从1−n,第i个怪物最初的生命值为Ai。
御坂的角色可以对当前生命值最高的怪物造成k点伤害。如果其中有几个,则选择编号较小的一个。如果怪物的生命值小于或等于0,在御坂使用他的能力后,它就会死亡。 御坂使用他的能力,直到所有怪物死亡。你的任务是确定怪物死亡的顺序。
第一行是怪物的数量n(1≤n≤3×105)和御坂每次可以对怪物造成的伤害k(1≤k≤109)。第二行是每个怪物的生命值Ai(1≤Ai≤109)。
输出怪物的死亡顺序
样例
输入1:
3 2
1 2 3
输出1:
2 1 3
——
输入2:
2 3
1 1
——
输出2:
1 2
第一组样例中,怪物的生命值变化为:
第二组样例中,怪物的生命值变化为:
对于100%的数据,
1<=n<=3∗105,1<=k<=109
1<=Ai<=109
代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int a[n+1];
for(int i=1;i<=n;i++) cin>>a[i];
while(1){
int k=a[1];
for(int i=2;i<=n;i++) k=max(k,a[i]);
for(int i=1;i<=n;i++){
if(a[i]==k && k>0){
a[i]-=m;
if(a[i]<=0) cout<<i<<' ';
break;
}else if(k<=0){
return 0;
}
}
}
return 0;
}