Pagini recente » Cod sursa (job #1849589) | Cod sursa (job #1185052) | Cod sursa (job #1435394) | Cod sursa (job #1448158) | Cod sursa (job #3194731)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("partitie.in");
ofstream fout ("partitie.out");
int n,k,i,j,nr,fr[300001];
struct el
{
int nr,poz;
};
el v[300001];
int cmp (const el &a,const el &b)
{
return a.nr<b.nr;
}
int main()
{
fin>>n>>k;
for (i=1; i<=n; i++)
{
fin>>v[i].nr;
v[i].poz=i;
}
sort (v+1,v+n+1,cmp);
j=2;
nr=0;
for (i=1; i<=n; i++)
{
if (fr[v[i].poz]==0)
fr[v[i].poz]=++nr;
while (j<=n&&v[j].nr-v[i].nr<k)
j++;
if (j<=n)
{
fr[v[j].poz]=fr[v[i].poz];
j++;
}
}
fout<<nr<<"\n";
for (i=1; i<=n; i++)
fout<<fr[i]<<"\n";
return 0;
}