Pagini recente » Cod sursa (job #155131) | Cod sursa (job #668834) | Cod sursa (job #1072914) | Cod sursa (job #2822540) | Cod sursa (job #2406566)
#include <bits/stdc++.h>
#include <set>
#define Nax 300001
int n,d;
std::pair<int,int>v[Nax];
int poz[Nax];
int f[Nax][2];
int nax;
using namespace std;
ifstream fin("partitie.in");
ofstream fout("partitie.out");
int main()
{
fin>>n>>d;
for(int i=1;i<=n;i++) {fin>>v[i].first; v[i].second=i;}
sort(v+1,v+n+1);
f[1][0]=1;
f[1][1]=1;
poz[v[1].second]=1;
nax=1;
for(int i=2;i<=n;i++)
{
bool ok=0;
for(int j=1;j<=nax && !ok;j++)
{
if(v[i].first-v[f[j][1]].first>=d)
{
ok=1;
f[j][0]++;
f[j][1]=i;
poz[v[i].second]=j;
}
}
if(!ok)
{
nax++;
f[nax][0]=1;
f[nax][1]=i;
poz[v[i].second]=nax;
}
}
fout<<nax<<'\n';
for(int i=1;i<=n;i++)
fout<<poz[i]<<'\n';
return 0;
}