Pagini recente » Cod sursa (job #2636123) | Cod sursa (job #667257) | Cod sursa (job #2832296) | Cod sursa (job #867012) | Cod sursa (job #243878)
Cod sursa(job #243878)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
const char iname[] = "partitie.in";
const char oname[] = "partitie.out";
vector <pair <int, int> > sir;
vector <int> idx;
#define Max(a, b) ((a) > (b) ? (a) : (b))
int main(void)
{
ifstream in(iname);
ofstream out(oname);
int N, D, val;
in >> N >> D;
for (int i = 0; i < N; ++ i) {
in >> val;
sir.push_back( make_pair(val, i) );
}
sort(sir.begin(), sir.end());
int i = 0, j = 0;
int res = 0;
while (i < N) {
while (j < N - 1 && sir[j + 1].first - sir[i].first < D)
j ++;
res = Max(res, j-i+1);
i ++;
}
idx.resize(N);
for (int i = 0; i < N; ++ i)
idx[sir[i].second] = i % res;
out << res << "\n";
for (int i = 0; i < N; ++ i)
out << idx[i] + 1 << "\n";
in.close(), out.close();
return 0;
}