Cod sursa(job #3124850)

Utilizator ingrid.mitzuIngrid Nagy ingrid.mitzu Data 30 aprilie 2023 12:00:35
Problema Partitie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb

#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin ("partitie.in");
ofstream cout ("partitie.out");

const int MAXI = (int) 300002 ;

typedef struct {
    int val;
    int poz;
} nr;

nr v[MAXI] = { {0,0} };

int n=0, d=0, i, j, nrsubm=0, sol [MAXI] = {0} ;

int main()
{
   cin >> n >> d;
   for ( i=1; i<=n; i++ )
   {
       cin >> v[i].val;
       v[i].poz=i;
   }
   sort ( v+1, v+n+1, [] (nr v, nr b) {
       return v.val < b.val ;
   });
   j=2;
   for ( i=1; i<=n; i ++ )
   {
       if ( sol [v[i].poz] == 0 )
       {
           nrsubm++ ;
           sol[ v[i].poz ] = nrsubm;
       }
       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];
   }
   cout << nrsubm << '\n';
   for ( i=1; i<=n; i++ ) cout << sol[i] << "\n";
    return 0;
}