Pagini recente » Borderou de evaluare (job #1335609) | Borderou de evaluare (job #2363931) | Borderou de evaluare (job #2581579) | Borderou de evaluare (job #2624611) | Cod sursa (job #2501158)
//
// main.cpp
// partitie
//
// Created by Serban Bantas on 29/11/2019.
// Copyright © 2019 Serban Bantas. All rights reserved.
//
#include <bits/stdc++.h>
#define nr first
#define ind second
using namespace std;
int afis[300005];
pair<int,int> v[300005];
vector<pair<int,int>> conex[300005];
int main(int argc, const char * argv[])
{
freopen("partitie.in","r",stdin);
freopen("partitie.out","w",stdout);
int n,i,j,d,maconex=0;
scanf("%d%d",&n,&d);
for(i=1;i<=n;++i)
{
scanf("%d",&v[i].nr);
v[i].ind=i;
}
sort(v+1,v+n+1);
conex[++maconex].push_back(v[1]);
for(i=2;i<=n;++i)
{
bool ok=1;
for(j=1;j<=maconex && ok;++j)
if((v[i].nr-conex[j][conex[j].size()-1].nr)>=d)
ok=0,conex[j].push_back(v[i]);
if(ok)
conex[++maconex].push_back(v[i]);
}
for(i=1;i<=maconex;++i)
for(j=0;j<conex[i].size();++j)
afis[conex[i][j].ind]=i;
printf("%d\n",maconex);
for(i=1;i<=n;++i)
printf("%d\n",afis[i]);
return 0;
}