Cod sursa(job #3237285)

Utilizator iuliageambazuGeambazu Iulia iuliageambazu Data 8 iulie 2024 09:07:37
Problema Partitie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("partitie.in");
ofstream fout("partitie.out");
struct nr
{
    int x,y;
};
nr v[300001];
int a[300001],sol[300001],nr0,nr1,m,d,i;
bool op1(nr a,nr 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,op1);
    nr0=1;
    nr1=0;
    for(i=1;i<=m;i++)
    {
        while(nr0<m && (a[nr0]!=0 ||v[nr0].x-v[i].y<d))
        {
            nr0++;
        }
        if(a[i]==0)
        {
            nr1++;
            a[i]=nr1;
        }
        if(a[nr0]==0&&v[nr0].x-v[i].x>=d)
        {
            a[nr0]=a[i];
        }
    }
    for(i=1; i<=m; i++)
    {
        sol[v[i].y]=a[i];
    }
    fout<<nr1<<'\n';
    for(i=1;i<=m;i++)
    {
        fout<<sol[i]<<'\n';
    }
    return 0;
}