Pagini recente » Cod sursa (job #801431) | Monitorul de evaluare | Cod sursa (job #1724879) | Cod sursa (job #513314) | Cod sursa (job #1704518)
#include <fstream>
#include <algorithm>
using namespace std;
const int N_MAX = 300005;
pair<int, int> v[N_MAX];
int ans[N_MAX];
int main() {
ifstream f("partitie.in");
ofstream g("partitie.out");
int N, D, cnt;
f >> N >> D;
for(int i = 1; i <= N; i++)
f >> v[i].first, v[i].second = i;
sort(v+1, v+N+1);
cnt = 0;
for(int i = 1, j = 1; i <= N; i++) {
while(D <= v[i].first - v[j].first)
++j;
cnt = max(cnt, i - j + 1);
}
for(int i = 1; i <= N; i++)
ans[v[i].second] = i % cnt + 1;
g << cnt << '\n';
for(int i = 1; i <= N; i++)
g << ans[i] << '\n';
return 0;
}