Cod sursa(job #900827)

Utilizator misinozzz zzz misino Data 28 februarie 2013 22:02:38
Problema Partitie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 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;
}