Pagini recente » Cod sursa (job #1256320) | Cod sursa (job #961630) | Cod sursa (job #311318) | Cod sursa (job #946545) | Cod sursa (job #1954090)
#include <iostream>
#include <fstream>
#include <algorithm>
#define MAX 300001
using namespace std;
ifstream f("partitie.in");
ofstream g("partitie.out");
struct partitie
{
int poz,x;
}a[MAX];
int n,d,sol[MAX];
inline bool cmp(partitie a,partitie b){return a.x<b.x;}
void solve()
{
f>>n>>d;
for(int i=1;i<=n;i++){f>>a[i].x; a[i].poz=i;}
sort(a+1,a+n+1,cmp);
int i=1,j=1,ans=0;
while(i<=n)
{
while(j<=n&&a[j].x-a[i].x<=d-1)++j;
if(ans<j-i)ans=j-i;
++i;
}
g<<ans<<'\n'; int k=1;
for(i=1;i<=n;i++)
{
sol[a[i].poz]=k;
++k;
if(k==ans+1)k=1;
}
for(i=1;i<=n;i++)
g<<sol[i]<<'\n';
}
int main()
{
solve();
return 0;
}