Cod sursa(job #2968716)

Utilizator tedicTheodor Ciobanu tedic Data 21 ianuarie 2023 20:31:13
Problema Partitie Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <algorithm>

using namespace std;
pair <int, int >v[300005];
int sol[300005];
int main()
{
    ifstream cin("partitie.in");
    ofstream cout("partitie.out");
    int n,d,cnt=0,j;
    cin>>n>>d;
    for(int i=1; i<=n; i++)
        cin>>v[i].first, v[i].second=i;
    sort(v+1,v+n+1);
    for(int i=1; i<=n; i++)
    {
        j=0;
        if(sol[v[i].second]==0)
            sol[v[i].second]=++cnt;
        while(j<=n && (v[j].first-v[i].first<d || sol[v[j].second]>0))
            j++;
        if(j<=n)
            sol[v[j].second]=sol[v[i].second];
    }
    cout<<cnt<<'\n';
    for(int i=1; i<=n; i++)
        cout<<sol[i]<<'\n';
    return 0;
}