Cod sursa(job #2454095)

Utilizator robert.barbu27robert barbu robert.barbu27 Data 7 septembrie 2019 13:58:38
Problema Partitie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("partitie.in");
ofstream g("partitie.out");
int m,d;
struct nr {int elem,poz;}; nr v[300001];
int rasp[300001],sol[300001];
bool op1(nr a,nr b)
{
    return a.elem<b.elem;
}



int main()
{
f>>m>>d;
for(int i=1;i<=m;i++)
{
    f>>v[i].elem;
    v[i].poz=i;
}
sort(v+1,v+m+1,op1);
int cntpoz=1;
int nrsub=0;
for(int i=1;i<=m;i++)
{
    while(cntpoz<m&&(rasp[cntpoz]!=0 ||v[cntpoz].elem-v[i].elem<d))
    {
        cntpoz++;
    }
if(rasp[i]==0){nrsub++;rasp[i]=nrsub;}
if(rasp[cntpoz]==0&&v[cntpoz].elem-v[i].elem>=d)
{
    rasp[cntpoz]=rasp[i];
}
}
for(int i=1;i<=m;i++)
{
    sol[v[i].poz]=rasp[i];
}
g<<nrsub<<'\n';
for(int i=1;i<=m;i++)
{
    g<<sol[i]<<'\n';
}

}