Cod sursa(job #2958687)

Utilizator ingrid2328Nagy Ingrid ingrid2328 Data 27 decembrie 2022 20:02:44
Problema Partitie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 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 nrprt=0, 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;
    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 && v[j].val-v[i].val>=d) sol[v[j].poz]=nrprt;
    }
    fout<<nrprt<<endl;
    for (i=1; i<=n; i++) fout<<sol[i]<<endl;

    return 0;
}