Pagini recente » Cod sursa (job #1521795) | Cod sursa (job #2234243) | Cod sursa (job #1939267) | Cod sursa (job #2234461) | Cod sursa (job #2958691)
#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 nrprt=0, 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;
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 && v[j].val-v[i].val>=d) sol[v[j].poz]=nrprt;
}
fout<<nrprt<<endl;
for (i=1; i<=n; i++) fout<<sol[i]<<endl;
return 0;
}