Cod sursa(job #3194730)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 19 ianuarie 2024 08:51:32
Problema Partitie Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("partitie.in");
ofstream fout ("partitie.out");
int n,k,i,j,nr,fr[300001];
struct el
{
    int nr,poz;
};
el v[100001];
int cmp (const el &a,const el &b)
{
    return a.nr<b.nr;
}
int main()
{
    fin>>n>>k;
    for (i=1; i<=n; i++)
    {
        fin>>v[i].nr;
        v[i].poz=i;
    }
    sort (v+1,v+n+1,cmp);
    j=2;
    nr=0;
    for (i=1; i<=n; i++)
    {
        if (fr[v[i].poz]==0)
            fr[v[i].poz]=++nr;
        while (j<=n&&v[j].nr-v[i].nr<k)
            j++;
        if (j<=n)
        {
            fr[v[j].poz]=fr[v[i].poz];
            j++;
        }
    }
    fout<<nr<<"\n";
    for (i=1; i<=n; i++)
        fout<<fr[i]<<"\n";
    return 0;
}