Pagini recente » Cod sursa (job #3189208) | Cod sursa (job #323836) | Cod sursa (job #2526740) | Cod sursa (job #2207575) | Cod sursa (job #2958698)
#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<<'\n';
for (i=1; i<=n; i++) fout<<sol[i]<<'\n';
return 0;
}