Pagini recente » Cod sursa (job #2785014) | Cod sursa (job #3039853) | Cod sursa (job #1126007) | Cod sursa (job #626317) | Cod sursa (job #3124850)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin ("partitie.in");
ofstream cout ("partitie.out");
const int MAXI = (int) 300002 ;
typedef struct {
int val;
int poz;
} nr;
nr v[MAXI] = { {0,0} };
int n=0, d=0, i, j, nrsubm=0, sol [MAXI] = {0} ;
int main()
{
cin >> n >> d;
for ( i=1; i<=n; i++ )
{
cin >> v[i].val;
v[i].poz=i;
}
sort ( v+1, v+n+1, [] (nr v, nr b) {
return v.val < b.val ;
});
j=2;
for ( i=1; i<=n; i ++ )
{
if ( sol [v[i].poz] == 0 )
{
nrsubm++ ;
sol[ v[i].poz ] = nrsubm;
}
while ( (j<=n) && ( sol[v[j].poz] > 0 || v[j].val < v[i].val + d ) ) j++;
if ( j<=n ) sol [ v[j].poz ] = sol [v[i].poz];
}
cout << nrsubm << '\n';
for ( i=1; i<=n; i++ ) cout << sol[i] << "\n";
return 0;
}