#include<stdio.h>
#include<algorithm>
#include<set>
#include<vector>
using namespace std;
typedef long long ll;
typedef pair<int,int> Pi;
#define X first
#define Y second
int p[100010], n, k, q[100010], per[100010], s[100010];
struct BIT{
int r[100010];
void update(int x){for(int i=x+1;i<=n;i+=(i&-i))r[i]++;}
int read(int x){
int ret = 0;
for(int i=x+1;i;i-=(i&-i))ret += r[i];
return ret;
}
void clear(){for(int i=1;i<=n;i++)r[i] = 0;}
}bit;
bool comp(const int &a, const int &b){return p[a] < p[b];}
int main(){
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)scanf("%d",p+i);
for(int i=0;i<n;i++)per[i] = i;
sort(per, per+n, comp);
vector <int> v;
for(int i=0;i<n;i++){
if(i > 0 && p[per[i]] != p[per[i-1]]){
for(int j=0;j<(int)v.size();j++)bit.update(per[v[j]]);
v.clear();
}
s[i] = max(per[i] - bit.read(per[i]) - k, 0);
v.push_back(per[i]);
}
bit.clear();
for(int i=0;i<n;i++){
int low=0, high=n-1, cor=0;
while(low<=high){
int mid = (low+high) / 2;
if(s[i] <= mid - bit.read(mid))cor = mid, high = mid - 1;
else low = mid + 1;
}
q[cor] = p[per[i]];
bit.update(cor);
}
for(int i=0;i<n;i++)printf("%d ",q[i]);
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
2 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
3 |
Correct |
0 ms |
3164 KB |
Output is correct |
4 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
5 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
6 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
7 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
2 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
3 |
Incorrect |
2 ms |
3164 KB |
Output isn't correct |
4 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
5 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
6 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
7 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
8 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
9 |
Correct |
0 ms |
3164 KB |
Output is correct |
10 |
Incorrect |
0 ms |
3164 KB |
Output isn't correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
35 ms |
3164 KB |
Output isn't correct |
2 |
Incorrect |
97 ms |
3164 KB |
Output isn't correct |
3 |
Incorrect |
57 ms |
3164 KB |
Output isn't correct |
4 |
Incorrect |
90 ms |
3164 KB |
Output isn't correct |
5 |
Incorrect |
96 ms |
3164 KB |
Output isn't correct |
6 |
Incorrect |
104 ms |
3164 KB |
Output isn't correct |
7 |
Incorrect |
80 ms |
3164 KB |
Output isn't correct |
8 |
Incorrect |
100 ms |
3164 KB |
Output isn't correct |
9 |
Incorrect |
79 ms |
3164 KB |
Output isn't correct |
10 |
Incorrect |
83 ms |
3164 KB |
Output isn't correct |
11 |
Incorrect |
121 ms |
3164 KB |
Output isn't correct |
12 |
Incorrect |
105 ms |
3164 KB |
Output isn't correct |
13 |
Correct |
85 ms |
3164 KB |
Output is correct |
14 |
Incorrect |
117 ms |
3164 KB |
Output isn't correct |
15 |
Incorrect |
103 ms |
3164 KB |
Output isn't correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
110 ms |
3164 KB |
Output isn't correct |
2 |
Incorrect |
82 ms |
3164 KB |
Output isn't correct |
3 |
Incorrect |
107 ms |
3164 KB |
Output isn't correct |
4 |
Incorrect |
97 ms |
3164 KB |
Output isn't correct |
5 |
Incorrect |
100 ms |
3164 KB |
Output isn't correct |
6 |
Incorrect |
82 ms |
3164 KB |
Output isn't correct |
7 |
Incorrect |
82 ms |
3164 KB |
Output isn't correct |
8 |
Incorrect |
97 ms |
3164 KB |
Output isn't correct |
9 |
Incorrect |
72 ms |
3164 KB |
Output isn't correct |
10 |
Correct |
82 ms |
3164 KB |
Output is correct |
11 |
Incorrect |
88 ms |
3164 KB |
Output isn't correct |
12 |
Incorrect |
105 ms |
3164 KB |
Output isn't correct |
13 |
Incorrect |
90 ms |
3164 KB |
Output isn't correct |
14 |
Incorrect |
119 ms |
3164 KB |
Output isn't correct |
15 |
Incorrect |
38 ms |
3164 KB |
Output isn't correct |