Cod sursa(job #2501158)

Utilizator cyg_SerbanBFlorin Gheorghe cyg_SerbanB Data 29 noiembrie 2019 09:57:03
Problema Partitie Scor 60
Compilator cpp-64 Status done
Runda simu Marime 1.05 kb
//
//  main.cpp
//  partitie
//
//  Created by Serban Bantas on 29/11/2019.
//  Copyright © 2019 Serban Bantas. All rights reserved.
//

#include <bits/stdc++.h>
#define nr first
#define ind second
using namespace std;
int afis[300005];
pair<int,int> v[300005];
vector<pair<int,int>> conex[300005];
int main(int argc, const char * argv[])
{
    freopen("partitie.in","r",stdin);
    freopen("partitie.out","w",stdout);
    int n,i,j,d,maconex=0;
    scanf("%d%d",&n,&d);
    for(i=1;i<=n;++i)
    {
        scanf("%d",&v[i].nr);
        v[i].ind=i;
    }
    sort(v+1,v+n+1);
    conex[++maconex].push_back(v[1]);
    for(i=2;i<=n;++i)
    {
        bool ok=1;
        for(j=1;j<=maconex && ok;++j)
            if((v[i].nr-conex[j][conex[j].size()-1].nr)>=d)
                ok=0,conex[j].push_back(v[i]);
        if(ok)
            conex[++maconex].push_back(v[i]);
    }
    for(i=1;i<=maconex;++i)
        for(j=0;j<conex[i].size();++j)
            afis[conex[i][j].ind]=i;
    printf("%d\n",maconex);
    for(i=1;i<=n;++i)
        printf("%d\n",afis[i]);
    return 0;
}