Pagini recente » Cod sursa (job #2797096) | Cod sursa (job #1019265) | Cod sursa (job #2905989) | Cod sursa (job #3192086) | Cod sursa (job #1627292)
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("partitie.in");
ofstream fout("partitie.out");
const int nmax= 300000;
struct str {
int x, y;
} x[nmax+1];
bool cmp1( str x, str y ) {
return x.x<y.x;
}
bool cmp2( str x, str y ) {
return x.y<y.y;
}
int main( ) {
int n, d;
fin>>n>>d;
for ( int i= 1; i<=n; ++i ) {
fin>>x[i].x;
x[i].y= i;
}
sort( x+1, x+n+1, cmp1 ) ;
int k= 0;
for ( int i= 1, j= 1; i<=n; ++i ) {
for ( ; j<=n && x[i].x+d>x[j].x; ++j ) ;
--j;
k= max(k, j-i+1);
}
for ( int i= 1; i<=n; ++i ) {
x[i].x= i%k;
}
sort( x+1, x+n+1, cmp2 ) ;
fout<<k<<"\n";
for ( int i= 1; i<=n; ++i ) {
fout<<x[i].x+1<<"\n";
}
return 0;
}