Cod sursa(job #918749)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 19 martie 2013 09:21:44
Problema Partitie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<fstream>
#include<queue>
#include<algorithm>
using namespace std;
ifstream f("partitie.in");
ofstream g("partitie.out");
int n,d,i,p[300010];
struct nr{int x,p;};
nr x,a[300010];
bool cmp(nr a,nr b)
{
return a.x<b.x;
}
queue<nr>q;
int main()
{
f>>n>>d;
for(i=1;i<=n;++i)
{
f>>a[i].x;
a[i].p=i;
}
sort(a+1,a+n+1,cmp);
p[a[1].p]=1;
q.push(a[1]);
for(i=2;i<=n;++i)
{
x=q.front();
if(x.x+d<=a[i].x)
{
p[a[i].p]=p[x.p];
q.pop();
}
else
{
p[a[i].p]=q.size()+1;
}
q.push(a[i]);
}
g<<q.size()<<'\n';
for(i=1;i<=n;++i)
g<<p[i]<<'\n';
return 0;
}