Pagini recente » Cod sursa (job #2163050) | Cod sursa (job #1440522) | Cod sursa (job #1931926) | Cod sursa (job #2374461) | Cod sursa (job #3260033)
#include <fstream>
#include <deque>
#include <algorithm>
using namespace std;
ifstream in("partitie.in");
ofstream out("partitie.out");
int n, i, d, j, big = 1;
pair<int, int> v[300010];
deque<pair<int, int>> pa;
int retard(pair<int, int> a, pair<int, int> b)
{
return a.second < b.second;
}
int main()
{
in >> n >> d;
for (i = 1; i <= n; i++)
{
in >> v[i].first; v[i].second = i;
}
sort(v+1, v+1+n);
pa.push_back(make_pair(v[1].first, 1));
v[1].first = 1;
for (i = 2; i <= n; i++)
{
if (pa.front().first + d <= v[i].first)
{
int grecu = pa.front().first;
j = pa.front().second;
pa.pop_front();
pa.push_back(make_pair(v[i].first, j));
v[i].first = j;
continue;
}
pa.push_back(make_pair(v[i].first, ++big));
v[i].first = big;
}
sort(v+1, v+1+n, retard);
out << big << '\n';
for (i = 1; i <= n; i++)
out << v[i].first << '\n';
return 0;
}