Cod sursa(job #2923690)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 17 septembrie 2022 21:16:56
Problema Partitie Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("partitie.in");
ofstream fout("partitie.out");
const int NMax=300005;
pair<int,int> v[NMax];
int sol[NMax];
int main()
{
    int n,d,i,j,x,cnt=0;
    fin>>n>>d;
    for(i=1;i<=n;i++)
    {
        fin>>x;
        v[i]={x,i};
    }
    sort(v+1,v+n+1);
    j=2;
    for(i=1;i<=n;i++)
    {
        if(sol[v[i].second]==0)
        {
            cnt++;
            sol[v[i].second]=cnt;
        }
        while(j<n and v[j].first<v[i].first+d)
        {
            j++;
        }
        sol[v[j].second]=sol[v[i].second];
        j++;
    }
    fout<<cnt<<'\n';
    for(i=1;i<=n;i++)
    {
        fout<<sol[i]<<'\n';
    }
    return 0;
}