fork(1) download
  1. #include <bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. int n,k,arr[250000],ne[250000],ans[250000],t[250000];
  5. set<int>se;
  6. signed main(){
  7. cin>>n>>k;
  8. for(int i=1;i<=n;i++){
  9. cin>>arr[i];
  10. ne[i]=-1;
  11. t[arr[i]]=1;
  12. }
  13. for(int i=1;i<=n;i++){
  14. auto it=se.lower_bound(arr[i]);
  15. if(it==se.end()){
  16. se.insert(arr[i]);
  17. if(t[arr[i]]==k){
  18. for(int j=arr[i];j!=-1;j=ne[j]){
  19. ans[j]=i;
  20. }
  21. se.erase(arr[i]);
  22. }
  23. }else{
  24. int num=*it;
  25. se.erase(it);
  26. t[arr[i]]=t[num]+1;
  27.  
  28. if(t[arr[i]]==k){
  29. for(int j=arr[i];j!=-1;j=ne[j]){
  30. ans[j]=i;
  31. }
  32. se.erase(arr[i]);
  33. }
  34. }
  35. }
  36. for(int i=1;i<=n;i++){
  37. if(ans[i]==0){
  38. cout<<-1<<"\n";
  39. continue;
  40. }
  41. cout<<ans[i]<<"\n";
  42. }
  43. }
Success #stdin #stdout 0.01s 9772KB
stdin
5 1
1 2 3 4 5
stdout
1
2
3
4
5