Cod sursa(job #3260112)

Utilizator vladsoartavlad sofronea vladsoarta Data 30 noiembrie 2024 10:38:10
Problema Partitie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("partitie.in");
ofstream cout("partitie.out");

int n,d,i;
pair<int,int>v[300050];
int ans[300050];
int nrgrup;
int j=0;

int main()
{
    cin>>n>>d;

    for(i=1; i<=n; i++)
    {
        int elem;
        cin>>elem;
        v[i].first = elem;
        v[i].second = i;
    }
    sort(v+1,v+1+n);
    for(i=1; i<=n; i++)
    {
        if(ans[v[i].second] == 0)
        {
            nrgrup++;
            ans[v[i].second] = nrgrup;
        }

        while(!(ans[v[j].second] == 0 && v[j].first - d >= v[i].first)&&j<=n)
            j++;
        if(j<=n)
            ans[v[j].second] = ans[v[i].second];
    }

    cout<<nrgrup<<'\n';
    for(i=1;i<=n;i++)
        cout<<ans[i]<<'\n';
    return 0;
}