Pagini recente » Cod sursa (job #2030817) | Cod sursa (job #2012460) | Cod sursa (job #2801424) | Cod sursa (job #345897) | Cod sursa (job #998224)
Cod sursa(job #998224)
#include <fstream>
#include <algorithm>
using namespace std;
int n,d,maxim,sol[300010];
struct solutie
{
int val,poz;
};
solutie v[300010];
inline bool Cmp1(const solutie A, const solutie B)
{
return A.val<B.val;
}
inline void Read()
{
int i;
ifstream fin("partitie.in");
fin>>n>>d;
for(i=1;i<=n;i++)
{
fin>>v[i].val;
v[i].poz=i;
}
fin.close();
}
inline void Solve()
{
int i,j,numar;
sort(v+1,v+n+1,Cmp1);
j=1;
v[n+1].val=2000000000;
v[n+1].poz=0;
for(i=1;i<=n;i++)
{
if(!sol[v[i].poz])
sol[v[i].poz]=++maxim;
while(sol[v[j].poz] || v[j].val-v[i].val<d)
j++;
sol[v[j].poz]=sol[v[i].poz];
}
}
inline void Afisare()
{
int i;
ofstream fout("partitie.out");
fout<<maxim<<"\n";
for(i=1;i<=n;i++)
fout<<sol[i]<<"\n";
fout.close();
}
int main()
{
Read();
Solve();
Afisare();
return 0;
}