Cod sursa(job #2958698)

Utilizator ingrid2328Nagy Ingrid ingrid2328 Data 27 decembrie 2022 20:18:18
Problema Partitie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb

#include <fstream>
#include <algorithm>


using namespace std;

#define LEN  300002

ifstream fin("partitie.in");
ofstream fout("partitie.out");

typedef struct {
    int val;
    int poz;
}nr;
nr v[LEN]={{0,0}};
int sol[LEN]={0};

int main()
{
    int n=0;
    int d=0;
    int i,j;

    fin>>n>>d;

    for (i=1; i<=n; i++) 
    {
        fin>>v[i].val;
        v[i].poz=i;
    }
    sort (v+1, v+n+1, [](nr v, nr b) { 
        return v.val<b.val; 
        } );
    j=2;
    int nrprt=0;

    for (i=1; i<=n; i++)
    {
        if ( (sol [ v[i].poz ] )==0) 
        {
            nrprt++;
            sol[ v[i].poz ]=nrprt;
        }
        
        while ( (j<=n) && ( sol[v[j].poz]>0 || v[j].val<v[i].val+d ) ) {j++;}
        if (j<=n) sol[v[j].poz]=sol[ v[i].poz ];
    }
    fout<<nrprt<<'\n';
    for (i=1; i<=n; i++) fout<<sol[i]<<'\n';

    return 0;
}