#include using namespace std; struct xy { long long x, y; float s; int id; }; int n, k, i, j, naj = 1; xy runners[100005], racunari[100005]; float najT, trenT; int main() { freopen("runners.in","r",stdin); freopen("runners.out","w",stdout); scanf("%d %d", &n, &k); //Ucitava broj trkaca i racunara for(i = 1; i <= k; i++) { scanf("%f", &runners[i].s); //Ucitava brzine trkaca runners[i].id = i; } for(i = 1; i <= n; i++) scanf("%lld %lld", &racunari[i].x, &racunari[i].y); //Ucitava koordinate racunara for(i = 1; i <= k; i++) { runners[i].x = racunari[i].x; //Postavlja prvih k trkaca runners[i].y = racunari[i].y; //na pozicije prvih k racunara } for(i = 1; i <= k; i++) printf("%lld %lld\n", racunari[i].x, racunari[i].y); //sort(); //Sortira trkace po brzini, rastuce (najbrzi prvo) for(i = 1; i <= k; i++) { printf("%d\n", i); } for(i = k+1; i <= n; i++) { najT = 1e20; for(j = 1; j <= min(k, 1750); j++) { trenT = runners[j].s*runners[j].s*((runners[j].x - racunari[i].x)*(runners[j].x - racunari[i].x) +(runners[j].y - racunari[i].y)*(runners[j].y - racunari[i].y));//Racuna kvadrat vremena trenutnog trkaca if(trenT < najT) { najT = trenT; naj = j; } } runners[naj].x = racunari[i].x; runners[naj].y = racunari[i].y; //Azurira poziciju trkaca koji je izabran za najbrzeg printf("%d\n", naj); } return 0; }