Pagini recente » Diferente pentru problema/dominouri intre reviziile 7 si 8 | Istoria paginii utilizator/ciui_ionel | Borderou de evaluare (job #3142651) | Cod sursa (job #2141197) | Cod sursa (job #1496930)
#include <fstream>
#include <algorithm>
#include <utility>
using namespace std;
const int NMAX = 300005;
pair <int, int> v[NMAX];
int afis[NMAX];
int main()
{
ifstream cin("partitie.in");
ofstream cout("partitie.out");
int n = 0, d;
cin >> n >> d;
for (int i = 1; i <= n; ++ i) {
cin >> v[i].first;
v[i].second = i;
}
sort(v + 1, v + n + 1);
int ans = 0, dr = 1;
for (int i = 1; i <= n; ++ i)
if (i == 1 || v[i].first - v[dr].first < d)
afis[v[i].second] = ++ ans;
else
afis[v[i].second] = afis[v[dr ++].second];
cout << ans << '\n';
for (int i = 1; i <= n; ++ i)
cout << afis[i] << '\n';
cin.close();
cout.close();
return 0;
}