Pagini recente » Cod sursa (job #2134132) | Cod sursa (job #1668287) | Cod sursa (job #170704) | Cod sursa (job #2476361) | Cod sursa (job #1419153)
#include <bits/stdc++.h>
using namespace std;
const int Nmax = 300000 + 1;
struct Node
{
int val;
int mult;
};
pair<int,int> v[Nmax];
queue<Node> Q;
int sol[Nmax];
int N, D, K;
int main()
{
ifstream in("partitie.in");
ofstream out("partitie.out");
in >> N >> D;
for (int i = 1; i <= N; ++i)
{
in >> v[i].first;
v[i].second = i;
}
sort(v + 1, v + N + 1);
for (int i = 1; i <= N; ++i)
{
if (Q.size() && v[i].first - Q.front().val >= D)
{
Node a = Q.front();
Q.pop();
sol[ v[i].second ] = a.mult;
Q.push({v[i].first, a.mult});
}
else
{
Q.push({v[i].first, ++K});
sol[ v[i].second ] = K;
}
}
out << K << "\n";
for (int i = 1; i <= N; ++i)
out << sol[i] << "\n";
return 0;
}