Pagini recente » Cod sursa (job #699943) | Cod sursa (job #1992461) | Cod sursa (job #1042396) | Cod sursa (job #761858) | Cod sursa (job #2958696)
#include <fstream>
#include <algorithm>
using namespace std;
#define LEN 300002
ifstream fin("partitie.in");
ofstream fout("partitie.out");
typedef struct {
int val;
int poz;
}nr;
nr v[LEN]={{0,0}};
int sol[LEN]={0};
int main()
{
int n=0;
int d=0;
int i,j;
fin>>n>>d;
for (i=1; i<=n; i++)
{
fin>>v[i].val;
v[i].poz=i;
}
sort (v+1, v+n+1, [](nr v, nr b) {
return v.val<b.val;
} );
j=2;
int nrprt=0;
for (i=1; i<=n; i++)
{
if ( (sol [ v[i].poz ] )==0)
{
nrprt++;
sol[ v[i].poz ]=nrprt;
}
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 ];
}
fout<<nrprt<<endl;
for (i=1; i<=n; i++) fout<<sol[i]<<endl;
return 0;
}