Cod sursa(job #1954090)

Utilizator Daria09Florea Daria Daria09 Data 5 aprilie 2017 10:41:21
Problema Partitie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define MAX 300001
using namespace std;
ifstream f("partitie.in");
ofstream g("partitie.out");
struct partitie
{
    int poz,x;
}a[MAX];
int n,d,sol[MAX];
inline bool cmp(partitie a,partitie b){return a.x<b.x;}
void solve()
{
    f>>n>>d;
    for(int i=1;i<=n;i++){f>>a[i].x; a[i].poz=i;}
    sort(a+1,a+n+1,cmp);
    int i=1,j=1,ans=0;
    while(i<=n)
    {
        while(j<=n&&a[j].x-a[i].x<=d-1)++j;
        if(ans<j-i)ans=j-i;
        ++i;
    }
    g<<ans<<'\n'; int k=1;
    for(i=1;i<=n;i++)
    {
        sol[a[i].poz]=k;
        ++k;
        if(k==ans+1)k=1;
    }
    for(i=1;i<=n;i++)
        g<<sol[i]<<'\n';
}
int main()
{
    solve();
    return 0;
}