Pagini recente » Cod sursa (job #2909857) | Cod sursa (job #2767776) | Cod sursa (job #331515) | Cod sursa (job #675627) | Cod sursa (job #999805)
Cod sursa(job #999805)
#include<fstream>
#include<algorithm>
using namespace std;
int n,D,sol[300100],nrpart;
struct Element{
int val,ind;
bool operator <(const Element &A) const
{
return val<A.val;
}
};
Element v[300100];
int main()
{
int i,j;
ifstream fin("partitie.in");
fin>>n>>D;
for(i=1;i<=n;i++)
{
fin>>v[i].val;
v[i].ind=i;
}
fin.close();
sort(v+1,v+n+1);
for(i=1,j=2;i<=n;i++)
{
if(!sol[v[i].ind])
sol[v[i].ind]=++nrpart;
while(j<n && (v[j].val-v[i].val<D || sol[v[j].ind]!=0))
j++;
if(v[j].val-v[i].val>=D && sol[v[j].ind]==0)
sol[v[j].ind]=sol[v[i].ind];
}
ofstream fout("partitie.out");
fout<<nrpart<<"\n";
for(i=1;i<=n;i++)
fout<<sol[i]<<"\n";
fout.close();
return 0;
}