很早想到%K排序,但是就是WA2,心态崩了,昨天晚上差点睡不着觉吐了,感觉自己好笨啊啊啊,言归正传,
- 按照正常的思路,样例是可以过的,但是AC不了,例如给出样例
- 3 3
3 1 2 经过自己模拟应该输出1 3 2 ,但是只会输出1 2 3 ,知道症结所在debug,0的先输出,之后输出k-1,k-2…但是怎么实现呢 取模后如果等于0,就让他等于K!!!!,然后sort 一下即可 *PS: 吐了晚上脑子不好用的一批,到开学再也不打了*
#include<bits/stdc++.h>
using namespace std;
int t;
const int N=3e5+10;
struct node{
int shu,xiabiao;
} a[N];
bool cmp(node x,node y)
{
if(x.shu!=y.shu)
return x.shu>y.shu;
else return x.xiabiao<y.xiabiao;
}
int main()
{
cin>>t;
while(t--)
{
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i].shu;
a[i].shu=a[i].shu%k;
if(a[i].shu==0)a[i].shu=k;
a[i].xiabiao=i;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)cout<<a[i].xiabiao<<" ";
cout<<endl;
}
return 0;
}