Pagini recente » Cod sursa (job #1786684) | Cod sursa (job #1445976) | Cod sursa (job #2355485) | Cod sursa (job #1278092) | Cod sursa (job #1493952)
#include<fstream>
#include<algorithm>
using namespace std;
int n, i, p, u, maxim, r, d;
pair<int, int> v[300005];
int sol[300005];
ifstream fin("partitie.in");
ofstream fout("partitie.out");
int main(){
fin>> n >> d;
for(i = 1; i <= n; i++){
fin>> v[i].first;
v[i].second = i;
}
sort(v + 1, v + n + 1);
for(i = 1; i <= n; i++){
while(v[u + 1].first < v[i].first + d && u < n){
u++;
}
maxim = max(maxim, u - i + 1);
}
fout<< maxim <<"\n";
for(i = 1; i <= n; i++){
r = i % maxim;
if(r == 0){
r = maxim;
}
sol[ v[i].second ] = r;
}
for(i = 1; i <= n; i++){
fout<< sol[i] <<"\n";
}
return 0;
}