Cod sursa(job #999952)

Utilizator vendettaSalajan Razvan vendetta Data 21 septembrie 2013 19:08:01
Problema Partitie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
#include <queue>
#include <deque>

using namespace std;

ifstream f("partitie.in");
ofstream g("partitie.out");

#define ll long long
#define pb push_back
#define mp make_pair
#define sz size
#define x first
#define y second

#define nmax 300006
#define inf

int n, D, grupa[nmax];
vector<int> v;

void citeste(){
    f >> n >> D;
    for(int i=1; i<=n; ++i){
        int x; f >> x; v.pb(x);
    }sort(v.begin(), v.end());
}

void rezolva(){
    int j = n-1;
    int cntGrupe = 0;
    for(int i=0; i<n; ++i){
        grupa[i] = ++cntGrupe;
        while( i < j && v[j] - v[i] >= D){
            grupa[j] = cntGrupe;
            --j;
        }
        if (i == j) break;
    }
    g << cntGrupe << "\n";
    for(int i=0; i<n; ++i){
        g << grupa[i] << "\n";
    }
}

int main(){
    citeste();
    rezolva();

    f.close();
    g.close();

    return 0;
}