Cod sursa(job #2968708)

Utilizator tedicTheodor Ciobanu tedic Data 21 ianuarie 2023 20:26:54
Problema Partitie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <algorithm>
#pragma GCC ooptimize("O1")
#pragma GCC ooptimize("O2")
#pragma GCC ooptimize("O3")
#pragma GCC ooptimize("unroll-loops")
using namespace std;
pair <int, int >v[300005];
int sol[300005];
int main()
{
    ifstream cin("partitie.in");
    ofstream cout("partitie.out");
    int n,d,cnt=1,j;
    cin>>n>>d;
    for(int i=0; i<n; i++)
        cin>>v[i].first, v[i].second=i;
    sort(v,v+n);
    for(int i=0; i<n; i++)
    {
        if(sol[v[i].second]==0)
            sol[v[i].second]=cnt,cnt++;
        while(j<=n && (v[j].first-d<v[i].first || sol[v[j].second]>0)) j++;
            if(j<=n)
                sol[v[j].second]=sol[v[i].second];
        }
    cout<<cnt-1<<'\n';
    for(int i=0; i<n; i++)
        cout<<sol[i]<<'\n';
    return 0;
}