#include using namespace std; mt19937_64 rng; int n,k,kopija,delilac=1e9-5,kon_pozx[100007],kon_pozy[100007],kon_res[100007]; struct slog{ long long x,y; }; slog tacka[100007]; struct slog2{ long long id; float v; long long x,y,kpocx,kpocy; }; slog2 raner[100007]; void ispis(){ freopen("runners.out","w",stdout); for(int i=1;i<=kopija;i++)printf("%d %d ",kon_pozx[i],kon_pozy[i]); for(int i=1;i<=n;i++)printf("%d ",kon_res[i]); } void unos(){ freopen("runners.in","r",stdin); scanf("%d %d",&n,&k); for(int i=1;i<=k;i++){ scanf("%f",&raner[i].v); raner[i].id=i; } for(int i=1;i<=n;i++){scanf("%d %d",&tacka[i].x,&tacka[i].y);} } bool cmp(slog2 a,slog2 b){ return a.vn){ kon_pozx[i]=raner[i].kpocx=raner[i].x=rng()%delilac+1; kon_pozy[i]=raner[i].kpocy=raner[i].y=rng()%delilac+1; kon_res[i]=raner[i].id; continue; } kon_pozx[i]=raner[i].kpocx=raner[i].x=tacka[i].x; kon_pozy[i]=raner[i].kpocy=raner[i].y=tacka[i].y; kon_res[i]=i; } } int najjeftiniji(int x,int y){ float mini=1e30,suma,f; int br=-1; for(long long i=1;i<=k;i++){ long long suma1,suma2; suma1=(x-raner[i].x)*(x-raner[i].x); suma2=(y-raner[i].y)*(y-raner[i].y); suma=suma1+suma2; f=raner[i].v*suma*raner[i].v; if(f10000)k=min(k,10000); if(k>25000)k=min(k,20000); if(k>50000)k=min(k,70000); sort(raner+1,raner+kopija+1,cmp); for(int i=1;i<=n;i++){ if(kon_res[i]>0)continue; int d=najjeftiniji(tacka[i].x,tacka[i].y); kon_res[i]=raner[d].id; } ispis(); return 0; }