Pagini recente » Cod sursa (job #753494) | Cod sursa (job #1588893) | Cod sursa (job #2328674) | Cod sursa (job #2365615) | Cod sursa (job #379253)
Cod sursa(job #379253)
#include <fstream>
#include <algorithm>
using namespace std;
#define MAX_N 300005
ifstream fin ("partitie.in");
ofstream fout ("partitie.out");
int N, D, M, A[MAX_N], I[MAX_N], Sol[MAX_N];
void citire()
{
fin >> N >> D;
for(int i = 1; i <= N; ++i)
{
fin >> A[i];
I[i] = i;
}
}
struct cmp
{
bool operator() (const int &a, const int &b)
{
return A[a] < A[b];
}
};
void solve()
{
sort(I+1, I+N+1, cmp());
for(int i = 1, j = 1; i <= N; ++i)
{
while(A[I[j+1]] - A[I[i]] < D && j < N)
++j;
if(j - i + 1 > M)
M = j - i + 1;
}
fout << M << "\n";
for(int i = 1; i <= N; ++i)
Sol[I[i]] = ((i-1) % M) + 1;
for(int i = 1; i <= N; ++i)
fout << Sol[i] << "\n";
}
int main()
{
citire();
solve();
}