Cod sursa(job #3237284)

Utilizator iuliageambazuGeambazu Iulia iuliageambazu Data 8 iulie 2024 09:06:22
Problema Partitie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("partitie.in");
ofstream fout("partitie.out");
struct str
{
    int x,y;
}v[300001];

int a[300001],sol[300001],j,nr,m,d,i;

bool cmp(str a, str b)
{
    return a.x<b.x;
}
int main()
{
    fin>>m>>d;
    for(i=1;i<=m;i++)
    {
        fin>>v[i].x;
        v[i].y=i;
    }
    sort(v+1,v+m+1,cmp);
    j=2;
    nr=0;
    for(i=1;i<=m;i++)
    {
        while(j<=m&&(a[j]!=0 ||v[j].x-v[i].y<d))
            j++;
        if(a[i]==0)
        {
            nr++;
            a[i]=nr;
        }
        a[j]=a[i];
    }
    for(i=1;i<=m;i++)
        sol[v[i].y]=a[i];
    fout<<nr<<'\n';
    for(i=1;i<=m;i++)
        fout<<sol[i]<<'\n';
    return 0;
}