Cod sursa(job #2401795)

Utilizator sichetpaulSichet Paul sichetpaul Data 10 aprilie 2019 08:24:57
Problema Partitie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <algorithm>
#include <queue>
#define DIM 300005
using namespace std;
struct element{
   int pos,ans,x;
};
element v[DIM];
bool cmp1(element a,element b) {
    return a.x<b.x;
}
bool cmp2(element a,element b) {
    return a.pos<b.pos;
}
priority_queue<int,vector<int>,greater<int>> q;
int main()
{   int n,dif,i,cnt=0;
    ifstream f("partitie.in");
    ofstream g("partitie.out");
    f>>n>>dif;
    for (i=1;i<=n;++i)
        f>>v[i].x,v[i].pos=i;

    sort(v+1,v+n+1,cmp1);

    q.push(1);
    v[1].ans=1;
    cnt=1;

    for (i=2;i<=n;++i)
       if (v[q.top()].x<=v[i].x-dif) v[i].ans=v[q.top()].ans,q.pop(),q.push(i);
       else ++cnt,v[i].ans=cnt,q.push(i);

    sort(v+1,v+n+1,cmp2);

    g<<cnt<<'\n';

    for (i=1;i<=n;++i)
        g<<v[i].ans<<'\n';

    return 0;
}