Cod sursa(job #1492729)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 28 septembrie 2015 02:42:03
Problema Partitie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
#include<algorithm>
using namespace std;
struct sa{
    int a;
    int b;
}v[300100],a;
int n,d,i,j,nr,p,u,x[300100],y[300100];
FILE *f,*g;
int cmp(sa a,sa b){
    return a.a<b.a;
}
int main(){
    f=fopen("partitie.in","r");
    g=fopen("partitie.out","w");
    fscanf(f,"%d%d",&n,&d);
    for(i=1;i<=n;i++){
        fscanf(f,"%d",&v[i].a);
        v[i].b=i;
    }
    sort(v+1,v+n+1,cmp);
    nr=x[ v[1].b ]=1;
    y[1]=1;
    p=u=1;
    for(i=2;i<=n;i++){
        a=v[ y[p] ];
        if(v[i].a-a.a>=d){
            p++;
            x[ v[i].b ]=x[a.b];
            y[++u]=i;
        }
        else{
            u++;
            x[ v[i].b ]=++nr;
            y[u]=i;
        }
    }
    fprintf(g,"%d\n",nr);
    for(i=1;i<=n;i++){
        fprintf(g,"%d\n",x[i]);
    }
    fclose(f);
    fclose(g);
    return 0;
}