【BZOJ】【3053】The Closest M Points

KD-Tree


  题目大意:K维空间内,与给定点欧几里得距离最近的 m 个点。

  KD树啊……还能怎样啊……然而扩展到k维其实并没多么复杂?除了我已经脑补不出建树过程……不过代码好像变化不大>_>

  然而我WA了。。。为什么呢。。。我也不知道……

  一开始我的Push_up是这么写的:

inline void Push_up(int o){
rep(i,k){
if (L) t[o].mn[i]=min(t[o].mn[i],t[L].mn[i]),t[o].mx[i]=max(t[o].mx[i],t[L].mx[i]);
if (R) t[o].mx[i]=min(t[o].mn[i],t[R].mn[i]),t[o].mx[i]=max(t[o].mx[i],t[R].mx[i]);
}
}

  就是如果没有右儿子,就不用它更新了……

  然而我改成zyf的这样:(t[0]初始化一下,mn都置为INF,mx都置为-INF)

inline void Push_up(int o){
rep(i,k){
t[o].mn[i]=min(t[o].mn[i],min(t[L].mn[i],t[R].mn[i]));
t[o].mx[i]=max(t[o].mx[i],max(t[L].mx[i],t[R].mx[i]));
}
}

  就过了………………aaarticlea/jpeg;base64,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" alt="" />  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAE9CAAAAADYWs8qAAAACXBIWXMAAABIAAAASABGyWs+AAAAAmJLR0QA/4ePzL8AAFhfSURBVBgZ7MEFQFRZ4zfgcw9grLl259rdtdba3a1r67prra7d3WJ3d2Bju4qiKCoqKop0dw7D1L33/L4hJe4gzAzxvf99HoL//J9D8J//cwj+838OwX/+zyH4z/85BP/5P4fgP//nEPzn/xyC//yfQ/Afo1JH8sjpCP5jRELY1fm2PHI4gv8YjRj5fEKpPL+90CBnI/iPsTCfnS0rdhxUt6eNBjkawX8MIIpIxJQvL7/8/C7Uf/1EWx45GcH/OkGtiJJFKdQagcHINKFvbAN4xAv3jAZw624kDk18zSMHI/hfpgr3dbG+esJ8s/kxi9tW7109vHwCgkPDZdEqNS/CUArbjU2Lj3oUiVjs+uUQAP4rHqrZmKH2AnIugv9ZqqAvlxd2r17AhMYyy1eqSt0WnYdNnr14w+GL1+89/+Tq7uUXGBrNQz+qG3+vmTque5MtHjwAwanPugho3Zv2RHW54ihHETkWwf8mJnO7MKFaLo5K4TiO5ilUrnrDNn3Hzjt476uvTESG8f+OufRg1cfoCwOmPPQM8Hk62GxlJGKs63vxcg3yh6uInIrgf1KE/ZZWeTn6Q5xW7moDt1l7RSFjmMPMveLZMdaA36xf2o/pXZKQhYGiKDDIRpSsUDQ3meXBkEMR/A+K+ryutilH042jRXvueh8kIAPC16wLxf7K26IB/wGEmBauUGvxZ6XC39Mv+uuedfP718o/z5shZyL4n6Px2tfIjKMZw5lUnfHQR410c55+DNier9YxD/9PA36q0GnRLZdwFePdTm+4+EUBqN7Mrb7anyFHIvhfE353QH5CM47jigy77KVEOmm2btfgTLNCRbr83qLupFvhiMdb/z36uLsAwLKLeRBDTkTwv0Xw2lieUD2R/P3PuCuRPtfXu0Jjt6TVLzUn22iQBH+5358vlADejTwQhpyI4H+K0mZofkL1R/L0OuOuxA8waDlueQwt7xdOGqTgNW/glQgA9sOORSIHIvj/Ax8l4sciLjalHDUIydv3jLsSaYh6YysDoDp6WYQuZwfu92PAo/Yn5ch5CHKUMIdgSFG92PPYRY4fCNhRgVCDkZ/6nnZVQpewY3XrmTupgbsnQ6DTywkbnQRgY62z0chxCHIQ5mE+fufbSKSivt+/08DRu18FIy1e84oRagwkb68TzkpICtpU3rRYyW4WvqLTiQ/QzWfp8nc8wtpXu6JETkOQc4iuyyf9u7r9ls/hSE55p89fgfbzWjRf8DIaujDHiQUJNRKSt+cpVw1SC15avUbN+QurlJ1sFXTjKdKg3jfPKky9o1hrT+Q0BDkG81y7MBiyFaX7PnCPQBLhl/rMCwbgvK75ryfCIU38MDQPR42H/DTgsreIFKLMf1m9rYe15s7wYjW2H9r/NlCEbpdnbD6yoHhtV+Q0BDkFC9q9NhpA8KT+thZX5EjAPLZ336lErG8zWx9WQgr/qpcZR42JIz9PvBeM5B51Xig/2sQCCNlaKW+NSg3+vv5NDp1sB+UjXCsP5DQEOUW0xUYZtEJWzkbA/veIp3g+pe0lxBFkYWu7voYEzbMuJhw1Mo5UXPZOjiQUR1cG4USRcR6AelXeQtUr5S/cdfuLQAYdfOZWpO19kNMQ5BC8zbogxPD5fTsEtweIJboeaV7zJuIEP7wb+WrQXqSmfNCectT4iFnzva4CEnndcQLOFC4w4bGL07pi7U6dWzagYak6sy29REhT7m9cx1KBHIYgZxDdN39GDOF1h9dA4CUNtHyvDSlQeDVi8Z+Xj7oDt1kbkErUlaaEZg6Sf9jtMCTwumALvBxQKnflAX0q5v71BaC0PzSyYb0Jl90ESLvbpdkhf+QsBDlD+NHbiBW2YJgK8NnmBoQ8XNrjF9LQFjEU9we0uQkELFuPlEKO1CI0s3CkytovGsSJPLyHB/u2e3LvLn2mTO16HjEE+y09moy54C5C0tdxv8xxYMhJCHIEzX1zHjE0V+vfBeD+143o56sH/2N1oWKl/S8+eoYFnGrd5RGAoLVbkILHunKEZiKSt8flYMS5NeszYigVAjQnLATECT07pMVEC19IithQc/gLETkIQU4gOs53RgzhWbuZDIBLvwnmXYbeEhB5oPbPv7Qfu2j2r+PtoeWzcgeSUdpMLExopuJI+RUOPGK4zVwmR4IQbxUSyK8MbzPrXhgkXe/w230Ncg6CnCB03WnEEF/37uMLLZeW+Wou94OW8u6EFtWr1O19OAwxHOcdQhLM/UgrE0IzG8nb61oYtNieZtcESJJdGNRhua0aUt4PbXNdgxyDIAfQnGjrCy3x7eBO76ElPq7Q4ixDHNX7G5efBSHO0wnXkUj0vDq2GKFZgCNVNjgDEE4XbW/DIC1wT5feh9wYJPhPb32DR05BkP3E5236H7YXIb4f1NkGWsLb4e3uQwo73ust4sm+nJ9YjnA0a5ACIx9Hw2U0JZ2f8tDh64I2426GQ4J8YfvHAnIIgmzHvoxd9nL9klt+X8f2fgMt0W5wOytIchtZ//jTZ89tbJ7dO7umX3FCaJbhaKMjjpsL5Gr8a7dLMujA3xncevkHEakp5vT8KCBnIMhuzGvBymhoLFfsWjzhC7TED0PbPoMk/4UF81Wt16Bx02YNKuUnhKNZipQfXCd//ycfpnXY7AJd/La07n8uGKmFDZgehpyBILtFrJ4bAS3/E9sDoCV+GtHyMSQFrChGOBKPo1mOENLFDgje2W3SzVDoYj22+bw3AlKxrmYjIEcgyGb8mRHuSII5jml8H5J8lxcnlHLErFK9EoRmC5POdyIB8fmffZZZRUGH0H0dep0ORUqq7iujkCMQZC/xXV8rJMGcxte/CUmu/xQhlJICraaf2N++QC6aLbja5n4AIi9OHLbxqQw6vJ7cer6diOTY/g4+yBEIslfEtPUMSXybWOsSpAh2E/ITypnUWGCjwuXuk5sSmi1IycXu0Ao+/cfY9Y9CIS3yWNf+Z8ORnGfDBxrkBATZir/e04chEfs8ttY5SFHd62VKKGfa8oIciJ7X5+u6fBzNFuTnma6IEXxp9vjVlv6Q9m5W56UfGZISR8+TIScgyE7Mb8ApAYmY7bA6ZyAl7HhzwlFK6l6B1sduU/lnLQjNHqTQX26IFXl7yaQlz1SQJD83dLRFNJIQz7XzQU5AkJ00x/qHIRF/p2eTK5DitqoyoRwhhVfy0DpZaSuCphCaTUjheb6Io3y6es4DJaQ5Lu2/0RNJ+DZ7wiMHIMhGzK+HhYAEQfuad7kPCfyLsYUIRwp27Fh3t+PXb99ej2/1FPxqU45mE1JqQxjiac5MegId1JcGTv0oIpEweqUcOQBBNuKP9g1FPPHp1Orj3kJC9MWOJoT81Hb1G9uxLQb06zt0xipLGbA9L0ezC6lyUo144X9OcIMur0eOcWRIIB7tEYQcgCD7sIBu53nE8d7ZpukWX0gI2lGLkFzNltqoAauWxLTxDItAAPwqM45mG9L6GRK87Lo2Aro4DZ8ThATMqfk7AdmPIPvwx7sGM8QQH4yuM/GxCAnu80sRk5p/P1ZAS3N79OKnUYjhP4HQ7MOZjvNAgmNdz6uhy6cuZxRIoOpzQInsR5BtWFCnwzxi+G1r9tvRQEj5OikfKf77jXDEUflFIc7jxoRmI1J8qxzxojYNtYJOh/s5I4Gwenwksh9BthGOt/Nl0LIdX3fmW0hyGGlq9utOd6QSsiAvR7MTafIvEoRsmm7LoENYz+PRiCc+buPFkO0Isgvza7dHA61bXdqdjIAU9mUkV3SaNY9U+LNVCc1WnNkUHyQI3r/oqQY6HBntgwTBrR/xyHYE2UXY2cabAexskxHPIc1pVK7a5j6QYN2O0GxGyhzhkSDyykqLSEgLHvhEg3j872uike0Isgn7Wv8oD4jn605zhjS38fk6XldAgl1/U45mN9LNHol46/X7PCBtx6pQxBP29YtAtiPIJsopPQMZxEcNZvhCmvvkwv1tIMV2YB6OZjuuwDo5vvuya52NBlLcxzkyxGHvmzkxZDeCbHKq7mMBzP230T6Q5j6h6MgPkMA/6J6b0ByANHuKJALPL7okg5TV56MRT9bushrZjSB7vGixSw2ol7ZwgDTHkcVnfIGEiOPNTTiaE3C55ociCdXjRfuDIeHNPwGIp/njbzmyG0G2+NZzfjggfql9jkGKaNOv5iZvSHBfUZVwNGcgtSyRzLtl+4KQmmrBcw3iCKc6hiC7EWQHvxGTvBmgXtEzHFJUZ7r2vyFHavzT0UUJzTFMpvkhGcc158KR2s3N4YjDvjV6JyKbEWQD1ZyBXxjAvBqf4yHhy7I+Kz9DQtiBFrkIzTlIhYtIzmmjtQaphM9xEhEnuvMBFbIZQTY42eklA6DZ18qfIZXg/WNm3o6EBKd5FQlHcxIyxh3JPdjpidT2nZEjjmbhqChkM4Isx77+dlGAVmjbLRqkJNyePO6oKySIL4YWIjRn4UocE5CMbN1zAak4LQhAHOF2Y2+G7EWQ5YS/ZkZAS7jZwJUhBfcVg9a80UCC6la7XITmNKTvFyR3+XQwUhFWPVIjFvNtaMkjexFkNWbV6r0Ireghc1VITrg9YurtMEhRXWnIcTTH4QptVyAZH/OvSO3JmnDEUQ7/OxrZiyCrqUesioaWaFvztYhklDv7bXKEJP52A0JzItLyJZIRjz1VIZWoeR8FxOIPtgpC9iLIYuxJGwcRWuo5Q2VIJmjhkOsRkPamHaE5A0dicTQOl3thMJKxPeeP1M7sjUIs5lDTWkC2Ishi/PglUdBiHvWv80gqYNpIWwZpXlNMOZojcAU7/jltZKca+YkWRyklVa4hGfkRJ6TmN9udIVZU1yVKZCuCrMU+tngtQIvf0S6QIYngP0d8hA6q40U4mjOQdg98fV3trS9vmtKtYWESY/A3JHPphQqpsK3nFYil2doyDNmKIGuxlaNCECOs7Q41kpAv6vMZuti2JDSHIGMiECvK22FfnxFju9Yrkm++C0MSdpcDkdrnvwMRS/xY9bGA7ESQtcLbn1VBS7jawI3hO9Xpli+gy7ehZjSnIH1dES9i4UpXj8+2d3evXr7iwFs1EsiOuiE19Yp7KsSK6j5biexEkKXYrVYuDFqKwXMV+E782HSvCB3cxubjaE5BimxQIs7x364hhtL7/a3NM+ZfDUe8E681SO3V4kjE0uyt68OQjQiyFJv8Zzi0xNd13wr4Tja9Vyh0+PZ7fkJzCq7x8ObznBDD/rex/oin8Xl3ccmcsyGI9eBCMFJTLLLWIAZzrnpag2xEkKUCmlxTQ4ufPiYS3/HPG1pBGns7IB+hOQbp/sxi/MAF5+08HKaVOyLiO4XzvW0rrsmg5b7NBakxq9UyxFJM6K5ANiLISux8U1cGgDnVv8vju8gJ81WQpHnYIQ9Hcw5S11LjdGvT9PHjBzUY74hkeB/rg9seRQOada9EpCZfYsMjhvBv+ecCsg9BVmIjp4ZBi1/TKwjfaW51doOk6DP1TDmag3B5FmkgBDu+s7V+6aFBCoL/m9N7rJTYeTIcqTHr6UGIFdZlghLZhyAredW+rALA/JudV+O7gMFnREiJ3F2J0JyFNLyHNIiBb06aPzj7xzdIiF6xVoEY/JkqH0VkG4IsxI43dGYAhD0dfBkSKXZMioCU8C2lCc1pcvV9j7QIAa/2jy37ZwAkeM3ep4IWC2gyR4VsQ5CVBk4MhVbor4dVSCS87/keUiLMSxKa43A/9X2ONPH+z2bX+NMbElym71VDS721ugtDdiHIQt+qnVcBEI+09WJIFDVppwYSFKdLEZp+HEezBpenxcEwpEkIeDh3hy8kOM3cqgbA3GqtUCO7EGShLQ2cGICIjgdUSKQ6NiwIUmxrE5pu3M8NKpoQwtEswJmWGnBVhjSJvh/8BUhwmbskDIByVU13hmxCkHXkbWaFAxCPdPRkSCDad7VmkBC+lurGEdM8pjQJ0u3++wurBlXPTWgWIHkq9D8RiDQJPIMU9xUzfBmYS40VGmQTgqxzr8JDHkBohxMqJJJPWK+ElG9tCJXEEdPyPRZcPNKM0O/IrGCow73tz40oQmgWILlLd1j5UgE9+O3+y4VBubqGE0P2IMg6o3v6ABB39fZhSKA6ONAfUjRX8lAJHPmp6ayzbz1D1YETCU3Eme3mEUPpu7U8oVmBmBapNvCAs4gMC704z4Uxl1r/aJA9CLKM3S8nlAC8fr2hQQLhXTsrBin+UwlNgSP5yzdbeNspWAktcWcBjprlNaMxSPmbiBfQnaNZg+PylGw4zTIcGRVltduHqcx/eSciWxBkmT+aODFAXDgpCInkozcpIOl1JY4mxeWq2Hv1/Rt7HDWId68B4Qr+UoyjWqTVS8Rjm0oSmlU4WqBcly0OPDJG9eWFivk0H61GtiDIKnbVt0UB7HXb1wISqPcMCYQkmbkJ/Y7LVX3aeXvfCD5k1y4R8bxHES5fqxqEapGRLkjwtSWhWYcjuYrWm/5MgQwRIjTQnKlwR0R2IMgiwohW3xigHrVJhgSifVcbEZJc2nE0Ua4mOz4Gq6AlPhm0MggxWNjLYRylXVoTqkXmhiABP68QR7MSRwtUGnVPjgxhYEH9fwtHdiDIImfKnVUB7Nhgd4YE0ZP3KSFJdSE3TcCVnP81iiGO8mrL5n/vP7N38fSlJ0abcmTAkLwcpZSsVyKRXRNCsxbH/VR2lJUKGSM8KbtbQDYgyBpfG//hD8Cx6wMNEmjOzQiBNK/BhMbjKh8MZ0iktBpWqlipulNvePtM5SjpO7syoZTLvZ8hkWbxzxzNalzeyrO+MmRI5OxaLgxZjyBLRA1p/UkE1BM3hSMBc5n8hUESf7sgjWfa7GY0kuIDnhyycAhS4l0XQslvOzoRSrl8J5CEY1uOZoP8rU6EIyOYU70/NMh6BFmBra5qqQHY/kkeDAmUK+6oIc17KEfjFBz1QYUUeIUaANv7M0dJg4tTCaVc3uNIQjhakdAsx+Wb1PsvV4YMUB6udFdEliPIAuzCLzsiAWYz5I2ABJpTe2SQprLIR+NUNg8RIYm9/I2jlJS22FeEUC7XPhFJRP9dmKNZb96T/j3fMKQfC+jbLhxZjiALvG403ZcBgeOvK5BAeL4oiEGaaweOxijQ/6kc0pjDsFyUUq7gqbe/Ekq5VXIk5T8yH81ypNUbp76t/hWQfoJ1+bUCshpB5vPv0uOrCEQvPhKOBMx9toMIaeFrc1Ets5q7AnlIYsKznnmoFvfTAc0sE0rJBE8kxdxHFjTLZWZCsxKX/4ro3KfxvyLST7aq+nuGLEaQ6fg/61oLgLBxayBDgvA5d9WQprYsTik1KT7NTgFJTHBfXTMXjcHl3o6bdQkljZ8hGeZrceX2qtYFzUxNaJbh1kSIX35rbsOQbsyz1cBoZDGCzMYOVjgaDfCbVvswJFCu2i+DNGbfglKTQn1vRwqQwniXTU3ymdJYXO5tiPzDlHK5zFVIhqnVGnmg1fqeZfOamdCsQUa6QrRt3vETQ7ppbpQ7IiJrEWS2942m+TJEr1vlzZBAvXdRCIMk5j3YzCRf6xOhGkgRle/m18lvRuNxeXeB3W/KUdL1PSTw0WFfzkypm9/MhGYB0vg1wN+qN84D6Rf6Zz03ZC2CTBY9pMkHkYUt2+rLkIC/NsmLQRILWZ4nT21zbxWkMNWbPyv/ZEoTcQWPApo1P3Nc3kMCJIlqmff1yVXymtBMxxW1BKDZXWlbJNKNOdSbpkGWIshc4q4K51UsYO6uAIYE4usR7wVIYiEbC1da7qRkkCK6r6iax4QmQSpaAPAdY0rJWHfowjRRX9dUz0MzHbdfBUA5tYYVQ7opjla2ZMhKBJnrXcM5Acxr+oFghgTMc+IjFSQJfrMrTX+nECFJeN07rwlNhrR6BoC97WJCav6LNIgKh6lFaGYji0Kg5dZqojfSjfkP+zUMWYkgU/EjmtuLXtMOhTAkilp8MRpSmMJ6yIjH0SKkCc/bmdEUyBhPaAnP2pvkOiQiLaL8YBkTmkF5fs5jStOPjHWHlniplgWPdBNeVlorIAsRZCZ2rvIJZdA/x0IZEmlOHoqAFDF0/+jzUQJ0EKzbmtIUuLzbRcTgbXqYLgpD2lQX6xTIY0ozwKTTncX185rR9CId7BFDM3WMK9JPtqHGe2QhgswU0m6ou8r8QhhDImZ/OpxBAu+2fruPBrpo7jc3oSmRti8QR/jYbrQHfkDjfGd+g/wmNN243jKl14G2P5nRWCamNG2kzkvE+tb5igbpxjzbD1Yj6xBkIratyh3R6mEEw3dKmygGCeq3K16oGHRgUedqm9CUuLxrVYgnzuz3CT/CeKXH1hp5aCKTXDQtpEswmNrv6K95TSmlXJHqxfKY0DRwpR8hlrj9T1ekn/pm5YsMWYYgE3m3mOKn8lEwJKFSMkjg7efbC9BFDNpe1oSmYjLQAYn2D3+FdGCqj6N+NqFxTH7uXtiU6kba+wJgGu8djfOaUlLvzIvZVcyoblzuSwyxQkbfUiP9giY1C0KWIcg84obqDxkY0kF0Xf5OgC6C66y8JjQVru4NEYms579CuohRO8ub0Dg//XG+bm76nUmu3DQJro0rYjCN29o6eU3pME/Vs165qG7kkBqx2Ll5bkg/9q7mahFZhSDzeLeY5od0YX5bXwjQRWPX34ymxhXbrsZ3AZe+Ip2URwuY0DglHnzobkoT5W01rHBumsCsxEQ/xGGar8vq5iuyTCV+Hm5GdSKboxBLfN3mmgbpJ9tY0wFZhSDTMPPq9xnSgwXteMBDF+XtFiZUQq6ZQUhCCJQjFmP4AfFD0XKFTWkMs18DrfPTRKat3O4NLpybxjJt+UDFkIBp3Le3bnKBiW96UJ3IomDEEF36/zzQlSH93FpP4ZFFCDJNSNvx3kgPFmR+g4cOLPJkZSrFbMgXhqQYYvH+zgEyFUMamEfZRcdr5aVaJlXtnUrQRFzx7Xyk5YDCuSmlpMp5EUkxPuTh/SiIlyoSqgP5yxdazG30P/trHIpG+inPVn+OLEKQaU5UvSYiHQT/nZYa6MBCdhSjUkw7PmOQwD/pUabx5NNOMh66RTacEvF2yM+UmlS+pvlWoVSJEsWLF8lFTXJxJi3cIUZc71s4N8d1DkcyDBBFAMGzTKkOZKwHtPyGrfQX5jazE5F+3n0HqZE1CDKLqld/F6SD6HP8OQ8dWPCmglRSo5sipNi0oCYmZrmqzXoWooEuyv59osTw9aXzVLLQiJ+6vbC3e21j0S5XoVbF8hSeqwDEcItehQtNRRJClI8/Qyx2uw6h0shAJ2jt7/iWwbfVnECkn8ay2l1kDYLMcq/mcRXSQWHnJUKXMPOCVApX5bgIKfKxuTmqZWJabPTdQDWkqRe3iQBU9/qf1YB/NlzDtPh3bSrdvTei1C+H5ADE8LODtyEBU4W9XdJoaijiBP1JdSAdP0Fr5xIvgJ2veUOD9PMb01uNLEGQSfiJ7T8iPXjGoIviZBEqhSuxRQVJt+sSGs+00KBrvgoGCfy5Gr4MEJUioLowkEcM4W2nzWL08xntDobIlRqI0SGII0S5nx9axoQrs1ONOOfKESqJNLWD1sF9QQDEMb2+MaQb/7D6HWQJgkzysfFmGQzE/1uDoxK4/PPCIIktKcTRRCZ5O+//EhrNM8YEpVyuYognvq/+RkQc+ZoBPGJpPuzlwdQfN87efOI14onRgTYrmuQ2oZRyLawYYjkOJFQSqfcaWsdOhELLsbG5DOnnP36gGlmBIHOwpY1ewkDC284clZJ7tDukyfoTmpSJaZXR+/798OXTs2Pbtl/6GKhAnKB65zWIEzZoKI84YhQPgIUspeWPIIYYHfRhb9/iJiY0lsn4cMQSNuThqBRSzQZah/cHQYuZt/vEkG783RqPkBUIMod/61mBMIzGrh9HpZh2fw0d7FsTmoKJ6U8/ly2W11SrzIBDLhEMWopuS5SIxTyqDeeRFIvYSuq+g6gM97HdPbiMiQlNQKqdY4j1sDGhUrhyT6G1b40PYoS3PShH+vmMHKVBFiDIHIfr3IFh5I87clQK1+AmdLldh9A0mJjW2K2AlnJivyjE0twuOJhHPCYP8PX4+GAC18bVw+bEnDbFqAlNZrIcsQKnUklc4dvQ2j3HHbHmjfNB+mlu1HqBLECQKRS9R7jDEBrPPdU4KoUU3ypClz1lCE1TqQsqaKnX1wpgiCGfn6+fBvHkFwZ0qF08HzUp27NeIZoa6fIZcc6UJVRKrssMwLbRjoh1pZsTMsBr8DgNMh9Bprhd5zQP/QlBDwbnotJyTfCHTksKEk6L6lJkrwIx+H0lXgqIEdoqd9soxJNt5mhaSFtbxHEdTiVxp3gAG7vYI9abzl+RAeqrdWyQ+Qgyg3pCLwfoTQh+Pq04R6VxLZ9AkiAC2NGyatkShfPnNaNcLJpcgQUyxAoZXemxgBiRw02reDDE0ViaUp04jqPDfRHvQHGOSiB7lQDWNrNDrM8DviEjvIaNViLTEWSGV032K6EnFmn1V1mO6sAV2QBJvE8YA/iQ9zf2L5o6okuTOlXLly6Sz5TjOJqAMxsRhFjKHWVXqxCLty5R/AlDPPsyVIKJiUmuPPkKFi3V5BQEpQYxPvYkVALZEgVgY+NnImJ8G+GMjNDcqHMHmY4gE/Czu3yAvqJPluKoTlzPL5DCvjwKQCIWHexud+fUqkkda5TOx3FUi+NMCpV5KyKGaFVhigzx5IuKbhARz/NXjibiOI7GyFWuedseQybM2nT2rQoaZ1fEUK/IxdHUyIZIAHad5rqJ0HLo/w0Z4j+lcxgyG0Em+NzSXA59+fbjqE7cz5sgyWePNUNqcvvjExuXMOU4Ll+55n8PvKpCDKfWffwZ4jHX5p2jES9wAuE4okXN8uTNly9f3lwmhOTu8SBUQIJPD+WIcasOoamRLVHQetxipqsI4F1HB2QIs2m8UY1MRmB84rIub6Ev8U0pqhtp/QJS5Nv3BkOa+u2qliVKN5h4zlv4a4g/tLyHtfkqIpH6Ws1nDHGidhYuUbZClRr1WnYfMmbi5Imj+rapU6lonnp7PdWI537uLWJ4jiA0NbJTgRiPWs5yEYFXjV8xZEjU7vr/IpMRGJ9b200y6Eu2haM6cWbTFJDArvxhAym8/5tjSx59NT/sJALi0MKX1IDH1AavBCQRteSPaMTSBFov2n7i6pOPPqEKATE0YU6W6/pUKd79RjDiKM+cEKAlrs7N0VTIYTViPe0wy0nE0yo3NMgYv8mdXJC5CIxOWNPxFfTm1p7qRiqfhBS30btUSE3wuTmpcqW57gyxxF5m9R75vh1Z5wGPZPxnW0NL4Xr/vAskKJ/NrF51zgclYt1c6YkYF6sSmorZBRFx3vWZ4yjerXAgGhnk2HuYNzIVgdF9a7shEvpSX8lDdeN6OEGCctmoj0gt5P6oYhUGWaoQT1zYvEa7eXWqXuMRiylksmgRgGgz2V8MsT80eLiVCEn8mz8rtjkbhBhv5l5HDLtOhKbElXqIBK7j5zvdqDArBBnE7DqP90JmIjA29YLudtCb72CO6sTlX8wgwarLYaSi/rakfOXRN5T4TuH7/Oi8tuvCoaX0sr93cNu2vbccIkWnxRVXPFxUP08/RySlCPF28wpWIJbydr9a/3zlAYQuXS9AK2QCoSmRurZIFLZ0855ynbyQUex1p999kIkIjO15y71K6EtzowDVjdSzhISoySOdkVLolbYVR95TIxXfq1ahgOi27/fWNSqXK1645YbbgwvM+HtwlXxDvfFdlMuzgwsnz5q+cP/9r2EMWsHbmg58JAewa7I3tMSVuTiaAun1Fd+pTwzKX+ojQ0ax579ODkTmITAy2dghjtAXc+tO0zIkEBKu/3oCKQiuKyrVOxAFKVEXLviAhbt+/fjqzrlds/s2bpC/sje89vR0RgLB9+W2LkXyVhlxeH7XmpU6rHjoJ0LLbvKAqzLAYtBdxDhamtAUyAw/JGXRyuycChnGWzZaGolMQ2Bk55pfZtBX1HYTqhtXbAskyMaOdkdykQ/6VJnyngFqhSwsLFKuYkhCtX+DGxLxbhfnTJMz/9X3EU/pfG/P2JZtes+/rwaUb7b2q1Zlyr0QaMkvLH8pwG7odsS4VZfQlMyjkcyzdrOCkXHRh+sf0iCzEBiXb4/Z/tCXcL8STQNpbQsJNzucRDKC6/YatfbLEWZ/6+jOLevWbjLff+3F1xCGBMqFM9yQVCSUFqsRR/bh4MAB9zyDgrwc33/zlfEA/3x+o7qLP2qgFeKoQMi0v5TQetmO0OS4ny2RwvN/3BkyLnhBg2fILARGpVnzmzX0Jb5px1HduFzTlEhNMX2MG5IKuN6//IAXLOTFqobFq7bsNnho307NajfsufC6owrxArpP90VSotP4j4ghs93Uqmgfa8H92cHJrWp2m7b5zON3rhHMbVXTnlciEIet6+8ILef+hCZHWtghped2KujBtV9PX2QSAqN60848Gnpir/sRmgZS/TIkvOh9GN8pPO5PL19rdUi49eIqxVosumH/wfbZvy/tH2we1arB8FNOPGKJL35ZEYkk5Bt/h1b0++2/Vui0w8Ph2KjyJA4t0XDIiqsOsndjm5sHIM6prrehFfI7ocmRSV5I6cOBUOiBPWq8KBqZg8CY5NOGf4Weop90IzQtZsMDkZqwfsJXJPK/MbNh/T9sQt8uq16mzbo3Hy7+06N2+QptVz8Jgt/VuUNXfdYgFr+q6HkBicR3dXczMPnTOb1nWvh4nRv424geBWkcjhBSoP32r/5bmi3xQSyrPvuhpfiLo8mZ7FEgJadxLgx6kO2ofw2Zg8CYLDteZNAL8zrYgNC0kDL7IMFz0l6GRO+3ztv9IerL5ga/DDrwympFExNCCEcK/dJ58eNgIOCmVTRiMb/mjV0YEoT8VfoRg+h/61EYZPeHl53qDOduhCbiiFmnm2Gnms/1Rwz335eJAMTluTiaFFfuEVJR9rNUQx+eIzt4IFMQGFH46Jm+0Avz+asAoWkita5CwpXptkjO4+hvpfpZuDyZXZ4QGiPf3DsWMzsusArFd8K5UitViKe5V7j0M4CJAPNaV5FUtwd8xhIuBomV25TUvByyto8NYijmT42A1pYCHE2K9HNEajP/CYFenjb/JxqZgcCILva4C/0oD5pwNG2kwhGkpt62W46kwm+PKlBgpu39aSUJoXHKvAMwyrTm4ieBIhKE1+8gRzzlyQoFVsoRQ2MztFWdDk81QRdqmOXOm69gkdJVazdp12fyuFYFm121slMj1q5xztDaXZjQpLi1kUjNspMjgz7kexpaIDMQGE/EuKUh0E9YfxP6A6SkOVJz2fwYyTxoSEitNeOLEEpJvFwTb7x+2qvQTz+12uEsIF5InSEKxGOhe+uUPMEjBh/85d4l2+gP2yZP/mPW3MVrdp6xtHENY8KH+RX6uSGexYTn0NpfjNAkuKI3ICG821UV9OI1rt03ZAIC47k+6CH0FNDQhP4AKb4FqT065Y9kDpQjP3fr223guHHDerZtUrdWrVp1GjQcuuzv36cvXL5iu60GccQXxQ9pkIi/0qTSHXzHNAIYkonY0WBeMOK8mmMJraNlCE2CdPkEKZvmBUM/Nu3+DIfxERhN9IylQdCTV2UT+gOk6Eakwt97hmTYovyl51l7BMs16qhAh6eW169ds3xk8/6LVzSS0Sxp583wnfCwZSNbpEl+oOOuSMTyWnsBWucqE5oEWRYGKU5jnRn0ojrdZB8PoyMwGuuhN6Avj4om9AdI0Q1IJdTGHck4/VpxQwh+iLl2vi4gKcGqTTcXaKk8PjkGM6TAACgvL3qHWIoj56F1uTqh33GFrzBI2nRHCf0EL2n6CEZHYCzC0ulu0BNzKcPRHyDFNiOVYC8lklKuaLNfBkkhbt+c3PwjGWKozNfzSE543GZCEICoZwdXrj70wEmB7/zsZNBins6Ic/+mCOBKDUK/Ix0+QJr9tmDoyeP3rp9hbATG4jRgHw89CS9/Lkp/gJTYhlRUGiTFXky7oISUz6fmDBs4YsZuGxViWC8OYEiBv9NqlRKAyuXi/F7tB6+5+iEUsZTP/lkRimQ+PFMCuF6b0O/IwhBIE/Z84qGnD31HOMPICIxlZ78X0JdiZ5nZeWnaSLkD+JFoy1dqpKZ0OD5+1LAhv89YdfKDClqOM2xFpKK+2OYS4nzeM6pl/W6zdl/995Xda4uJ462QXKBLNIAbdQhNxBW4KEIHm+ty6Mu621RPGBeBkQQNXhAGfYX2HuNQgaaN1LTAj0TLRCRgvCCo1IogN9trq7s3XeokUyKB+8TFKkhQHBlgj3gK2z1Te7TvOnzmun2HLvkjBUHFA7hZh9BEpNVb6CI7GQJ9iQ97zAuAUREYyakut6Av8WOdp0GdTGiaSDNrZEC054e7F87uWvbH0BYVqvU5q0QiFvznTw95SInaOT8MiZifnaXFjZdeInS4VY/QRORPX+h06qsAfQl3e60NhzERGEfQyFmB0JdiT19l5AJTmibS2RUZEOn0esvE7YuG9ek7bNGVACTBfKc2eSdAUtiOGwzpdqseoQm4PAfV0OnOrWjojb/eZ48CRkRgHCe63obeQoYcFtUWuWiaTEZHI2O+3ItiYX7+MqQUdstDhCTme94P6XarHqEJyC+PoZvzjgjoT3mm71kexkNgFB5DF4dCX8K7jt5MdChL08IVXokMUsgE6MCgg+DvjnS7WZfQBKTfF+imXO8mQn9RBwdawngIjEG9duAb6E2xfbIAhPQ2oWkg1S8iS2iQbjfrEpqALA5DGo7fUMAAoVuGvoDREBjDne5HNNBbcF8LEYjaaELTQFrbwRgEGM/NuoTG43IfE5CGTytDYAi/ZWPsYSwERvBp0IIA6I23/tWfAfyTgjQNpHcQDCdzCmUwmpt1CY1HKt5HWlSLn2lgCPe/p7nASAgM9238WEfoL3rBNAFaXs2pbpzZJB4Ge3fJOpzBaG7VIzQeafsWabr3TwAM8mXSPD8YB4HBnCb2fwn9Ma9Wd0RoRfxjQnXiCi2DobyPLrsZhh8Sw/2RPpb1CY1HRrogTfJFh9UwyMvR68JhFASG+jiu178M+lOfbR2CGOpbealOpOQ2GEZ+Y9KkWwLSwgRoiW6H/ZAutxsQGo/8HYi0fVlwWQVDsHvD9qtgDAQGejl8wBMGA4T3XyYgBnOtS3UilY7BEPyzWW2n2yFtyi8KaAVvWBSJ9LjdgNB4ZK0cP2C37pgvDKG+NPyiCCMgMIjm5oCJb2AIwbr2B4ZY4TOoTqTmFehPfLuiaYtdgUigUkFK9P2H0BKetd6oRjpY1ic0Dpf7mIAf+bJ753MNDCA/MuohjIDAEKEHh6x0hkEUM8YoEUd9Mw/VhdS9DX2xd6vbVh33iCHBp38jGCQI9nNDoCXbWvUY0uFWXULjkBr/4seC7x62+KCG/kJ3TraF4QgM4LHm91PhMIjo0OCBiHiu9akupMFD6Ef2eFHbqoNP+SOBxmL2UyUkBf59DDG8x1W7ih+zrE9oHDLeE+nhdPecxYsw6C1g69+fYTAC/dnNnW3NwzDK5Z0ikCDiH6oLafgI+vC8OLd7u0mnXfFdSPMxkZCmON83ElqifZ8GD/BDdxsSGosreZZHuojOjy+cvecNffluWeUGQxHoi38wbbUjDMRc6x0RkIB/kJ/qQOrfhx5sF6/besw6CEkwnzKz5JDGPre/ihjC68HtrfAj9xsTGotM8EK6+T6/dPyGN/TkvX2HHwxEoCf52Un7/WEo9YamfgyJPFvTOByhWhyhCUidW8i4qO2HXNVIjvlWmC6HDoHThouIIX6aO+kNfuBhU0JjkFq3RWRA2OtLhx8z6Mdz+/FwGIZAP6F7J1yKgqGYc709Ar6TreNorLwlKKFc/gqEUspxlFLyyzlkXOQ7OVJivuVmy6GD8nS1j4gTYHFTjrQ9bk6oFvfT2nBkTKTNvqNq6Mdl26VoGIRAL/6bpzxQw2Dq5a39GL4TXhajsWodX1iFkBqb2xNqVrgAoZSU3YuME5Aa8y0zRw4d2LsqyxBP8FcibVYtCaWUI70dkGFf/t4hQD8fN1oKMASBPvzXT3nBYDDxXY1TApLy70djmLSNCD1cmjR1vFGdFJ24pAihpNhGGAfzLjNTDl28u7UKQno9bUUoJYUaXNAgw9ibYRehH9F6lRUMQaCHgM3TXsMIlJP6hSIZxVFTGqN1MMLmkdYB8v3Fql4JXJKf4/LNhXEwz9IjoqBL6PxSp5FeT1oQSqqsP/gBemD3Bz+FfpQ3lryGAQgyLuLAjLcwAuFmHWsRyTCHajRGy0CINpXbRyF0WXt7eE4mlI5QwjiCy9Tygy6KI2a9IpBO/zYjpu3Pht5/D31ojg12gn4ijy76BP0RZJj66tzXMALm33GVCimEzuCoVnM/IGhOFwHwvBEB9rINIV08YRTirZ9/2h0NHXhLk9KnkU4PGhWc9FIdeewV9BK+fGI49BO4ZakL9EaQYTYrrBiMQFjex4shBc29/JRS0sATEF4uFwCmYYDicGHS9BmMwW7Tgg37L4UzSGPWxfsu+4b0uVnjt9eAs/kr6IW5jVoNPXktWukLfRFk1LctlmoYgXi31VMRqXi0o5SS2o4Aol1FxHMbRSodheHkB2ccfRvJyzTQ5W3jq/d3KMG72OGHzpWdGAA8W2MH/YgvO1lATw5/bgiGnggyyPfgaRmMgLl136dGalHbCKWkpj2S4a+WzTsPBnNfOv9hJNJkPzwo9PA5fB6wBD+0v8A8OXBmkQP0pDnR7iP09GLMrijohyBjIs/tCoIxRE+bGQIJol1ZSkk1G4DJg5HoWUXS2w8GejvS/AvSJthvFUXHtdsntTvtix9Z99M2EVg/0w36Cp01NBL64S2HHVNBLwQZwt9Z7QJjYDuGf2OQEjSeo6TyXYAFPY1GPPm1yePGvoJhbDuXc8IPqD9bAxqrrkNePj2PH1BNL3QK4KdM8YW+RIff1kFPyotDzwvQB0GG2C57CqOw6GvDIEllkYdyZU8ACLthhXjOW294OITAIB87FakbgB/gA8MAyJ9+0JybKCJt3oOq3gEC+/wVAr3x1xs+hp7kZ0ZeY9ADQUY4rrysgjFY9brGQwenFhxXfDMA/tkqNeLYTH8HA/kPqDWylT9+gAkMsSI3N3VF2p43b2kDvGu1IAr6i1jUKRB6ijo14S5DxhH8UMBLH8Rx33Q4Asbwps+RaOgSuZZwheZC68uMJ4hzY5grDMMWFD22pEMA0stvWpVzSJv32MEOwM1qK9XQn+jYYQn0Jbs414ohwwjSFvnv8m71h9gghu+OXcEwhg89toVDJ/FFcS7PcGiFbP4bsTQHe/rBMA+rTg2Y3zcI6fV1zLylDGn7+G8wsL/YVgYDaK7UeAR9yR9ss0WGEaSBOZn3qVmIELNWB6OBwH3b/GEMbzovC0QafIdytG04AOF2l6+IIVvbJQgGUfdv8F7YMjkU8T5dOvlEQArC633BiKO4/s/b5b5I078XAwRgbf59MEjIH53CoC/l+xtnL9289fCNs1+4BulEoJv/8kYlS7ToN6hXoyIlJnwNP7jRF8bwb4f53gxpUJ4yIXU+Q+tT/02IEbqgYyAM8rzCHgWezI1ALOeFzapWbLBBjWSUBxpVmBGGWO4L7odefoW0iIsGOgDs7wKnYRDxfcON0JsQdLZ9t7lzxvbv07v/79MW77zw2DFYg7QR6BQ4vXSXXVYOLm7O9vfX9Ow9Y5MXjICd7LjamyEt7HMdUvEqtMLW9IyCVtjCdj4wyPy2TgyyPw6poPW8889Eq8wWAUm4TC5FSOE/I6AlPztDzru+Q1pUU5q9AJRjS9yAYRR7ar+H/kKvL7v79d3ze2d3rZk9elCX1u3a95m46PA950joQqBLhHnrg85yxGIR1xpN8IERWM8ceSEYPxDyDym6ClrivWb/Qku+rqUTDKHptjUKwMNGu1Rgr1qZEq2i9aqfEpGAf/jXom3bF/at9kcwwF4NswI00UhL+LgqtwHZyGqPYBjm0XuUBvrTnLUSAaijQnycP7+1tjy6afaIzs2atBuy4IRNNCQQ6KCxbHY0GgkCV49xgcFk1/8aYf5BhR8R7ufPPZiHluvoUb4AxION7WAIv57vRQCKLTXWK1xbcKYVu8098uT9rvr3GOIozEfe9Y+SBbve/2OKK+yHb1HhR3yGFT0PyEY0fgED8XeqXIEBXh91xXdMGeHr/P7ZmfWjW1Ws3uOJBqkQ6ODYLu8UBeIpzk1wgKEcNo8au88uDOng2olr5Aot9cthbZbaMVh2fARDOP7jjxihiyrNXNpn+QU7lyAFELau2UPEYG/HD3quRgzRcVXf7YPnB+OHXPsXOAVEjej6CYYKntYuDPpTHL6rQkqaCM+Pt7cN7WwrICUCaSFzywwsvUSFWMx23ksGg0Tfnj54joVDBNJFto1UOI8Yms9rm9UYcfXZ7HMwhPPpCMQKPHDW3jVUjTgB/9TfEwBmv6ThiE8i4jCfC3sP+uPHnPsVPAWoJ4zxgKFE21rbYIDP5p8ghUV5NpoRipQIJKlvVprrvKrivBDE8Nxxj4chos+OGL7ttbcS6SS+LJ3/T8QJf72tR82G7fbAEOEuasSRyxkSMa/xZTrPmFC79J9u+E4ZIkM6uParehsQZy0MhcFkaxp6QH+aKwe8Ield1QZeSIlAklfnFt4I2l19wFsA4TevKmCIp6OGHfsUhgzwHsa18EY8meuDRT13wBAizyCFeVteuXLpxDV/ZJzP9Ll+gHL2Lh4GE780XwgDRB44HQopswpUcERKBFKi9lY8BUB2uXnjnSHiRwsZDCCad9/8SY4MURwl5U4gkRjq7IPMIagVCqUGeuBdPEUgcM4FGIHiQG0HGCBw6yUZUrtfLX+5L0iJQMrXhj2joKV6Maho98P3Q2EAzcphd8OQQexdlVxD1cjJZFfnPAbwfsEjGAFz+W06DOGx4UoUUvrWesAftZ2REoGEKPMKFoglOC0pXrqfHQywdfBzDTLMbwKp8xzZSumrQhruNG10F8CFpV9gDMozNd7DAMxtw2UZknPr0fWdeVM3pEQgwblZ5yjEYaGXmuVpdQl6s253XYOMU54khRfA6NjrEIZ0Ur2+hjScK9PCGhBXbJTBGJh7n6kwBPPcdD4CSX3p3vm1sLKTF1IiSE15psxeJFK9HW1W+xCDfjSj14ZAD+x9ddrCCUam3HhGjvRiLutvQLcTxXp9BuyGnWIwCvWV2u9gCOa7/VQovnvYqtdbAZOH+iElgtT8h9byxHeC+/JCNU9CP+eGfxChD99xpOgqGJdi5mQvhnTTXB/lAZ0OFhjtDbZ45BcYieeQaTBM8P7jQYgXtb3W4A8C0GdiEFIiSIW9LTdVRBIsaGv+Ni+gj5CRl1XQi+IooU3fwpjERU3ei8gAlymLodPe3NPCcGXwVQ2MRHOzsQMME37kZDBifRhdYspXAUCn8UFIiSAVxeFyt5Cc+8Rc4yOhh10LPaEf9rYC+WlCNIyHna50VoWM4M+3eQtdNpstFV4ts1TAaDxHzoeBIk9dCAWgOtao8HJPEVq9uvkiJYJUgsbVD0Fy/AnSzBYZ5zbumQA9eQ4hXLldDEbjWH9qEDLm65BZ0IFfkHv752sfVTAe9Y22HjBQ1FnLSOb8R9nqR4IZYsyv6oCUCFJxbzKBITn+BOnsiwxja82DoS/ZdkJpvRsMRiKOr/VRRMYo97f6BmlR07jfbUIFGJPH71tgKPn1d7d/zd/zmQJxrCutlyEFgpTElxXPIIWINfkWi8iwD1PeitAXe/IzR02b/8tgHI8q74lGRr3psx3S/EaVPqJkMCrV9d5hMIwovBxZvvwKVx7x1BOqvhaRHEFK4QuruSAFj1G1HiLD2NIjEdCfUydCqWnzeyISMUGAntR923swZFTE5pFqSPr428QQGJvbpHPQHxN5z7NjqhUe/DiSIdGnqiODkBxBCsLzsj0FpGBbu58cGfZ8hj2D/oLnE0qpab2TaoY4zNlKAT3dq3hJhWQYz4sMCTR+vgypsKcj30LSwzbmDMamvPaHgIxjTBR4lbfVjqHVihXsesmfRxLChrKnFUiGIAX/wcXNkYJwpswOZJi44EwUDKA+x1Et03KznAUGLebyzwYG/YiDe3gjGf7L6PHX/DQigxbvb1771zcCUvHddhiSjne1hNExl7+eI70YE0WB12hk/l+eWmyZ1vmXkkXyVxx3y0+N5ELbN/jKkBRBcrJthXoFI4WAGc0ckWEP5zowGOJNeY5qmfzUeJc3L4i808SSm6Gnl1UvqJAEU5xt1KhC6TrTb/mqNJrg/c2qzhhQ9wKPlMRXh0RIWT/GGcYnO7OSIQ2MiaLA8xq1Wh7k8uru2a1/j+3VuGKpkiWKFs5fstnU044RGqTEbleYFYakCJJRWZaoZ8eQgm2DyQIySvXPFSUM4tSF0FimBesvuHJzRbM8JXZAP2xqd08kwXv82XCbn/PFSTVLV+k+8+8WFcbZynxW118ewZBC0MswSJD9Mdofxse+TPVBMoyJoiDwGrVapZIHeXy0unnGfP7k4Z3qVS5bqmSJYkUKl67Tutcfq/Zdf+UUKFMxSFBPK3lTjSQIkuJf1ql4S0AKygNVryDDbi78BsMEziY0nmm+wj/nNyMld0A/32qdVeI75c3W/V/IwdQyj+vz2pcvM/xRpAAmu9996GcByYkqFSQ49e7ugEwQsO40Y6Ig8Bq1WqVSRIZ4f7G9Z3F8+6Kpo/u2r1e1cvnSpUuVLFe9UZsuQ/9asfXI9WfvnQPCIqKilRqBQRfnuq08GL4jSEL41LLcUQ1SchvaLggZFT33tgaGURzkaDKk5A7ohS3u5I7v5JvqrA0SEINposPcHSJ5xOA9Fvx2Q4MUGP5fe3ACV1Pe+AH4jJl53/+8y5gZY3ntDclOESkK2aVoFKaQLbITQvYtRNaY7GsmS5Eia0SpCGmRFu2L9u7t7uf8vn/70nLvud1zLh+feZ4qBHVs+hcB96SXHDPj7l76a/8WF8fxtpa9uxl2NTLq2aefxegp81ds2H7obFDow7iU7MKSUkG5SCKV0wyBSvSRRstK8QGFD+jYvk32SlERud5sLoGaiM/qFGiIXP/pm1ofo+q4o0YyjLwleE84z8BPgA8Ig7dI0REzTxlUI9t16jqkgQcJZm16mZsP/WOmy6oth85dDXsQl5ZXWFpaJhCWi8USmVxBMwwhUI/kjwbXFXiPwnuKxz2b7pWgkrINOmegrsL5N2hoKqYLVetj3/y4FjWydUUe3hO7GN2TompEfHPQOhlUKpg4YI/FBjm492Jmm8iCsjJhuUgskckVNM0QaC5O1yyH4B0K70hvd2l+XIrKng3slgQ1kYNbs6CxzAlUrY998895BDUgiygmeIf26RYpxxs0Q/AKYRiCNxQPhrvJocqdrvb5h/ucpsE56THde+CcYm/D1QK8Q+Gtcr+WrS/KUBm5+YuVAmrKXBzGQGPC7d/U+th33/4hQk3QBO8VW/pJ8QqRFd6NSi0SlpeXZcXGpgvEcgYv0feHH2WgHLO79goiWTL4LgHnItpsB/fEdg2CFXiLwmukeEd94zA5qiDy/MEZaqI9DxVCc+TaT9/U+uBbPSObDGiIubqwBC/RopTdprVrN+9gajHMpEWDer/1mHY0XiilCeRXh8dCuUw7HV8gfcyEdHAuech4As6RuDZ9cwjeoPAKkze/4ZgkGlXJnVXHHWqKXfuEgANxJlSt9yj9q+dt7kBDitP35KAlpfcWtfzl399/++1333///Xffff/9P3/48efGljuiiiTSgiPLoRTx1bF5DpDbAzbKwLUC5+5l4J7icKNVArxB4SVZtFUT11KCKiVbNtgN9ci3XRCDC/kLqVrvfPOP6XTYRB9oQiEsiT5VWF76aJeVThurpZN76tb5+aU6jTv26Dty6nyXRQtWbj3y17mD+6BUyezauwkA+pD5GRockxxu/Qg8kIxvcF2B1ygAwosdfjsiQTWedG3kBfXc3pEMTtC+P9R655tfNiBlwRZogDx27FbXZK2LnfWk7SF5EplUlBEdcScs8klKnkAilcpekRZEe/YOhjIksK1lAl6RugyPJODYHb3D4AFJ7miaQ/AKBVLkUd/kjhzViTFssAtqEXjcZcCNuN5UrTe+/beuO4rXuxJooGBxo+7Ld1yIKZMqGIKXCPMKIQTvEdmtmWIoU+hU7zDBa2k2M/LAsbgec8AH+mzTZWV4hWJyZzZySKVRrWyn2iugDsb3VD44Urb521pv/Oq0fSOYvY5CaIBIj/Q7kqcgUIIkOQdCGdqnmUMe3iA3+m+XgVuZdn3k4IN0bv3LcrxEPbFoulpEUD3F6R8sy6GG57tiCbgS3paq9UqdBSVnXYHT45KgEcWtQU4JUlSP5O9cwkCZp9YG1wjeYvb081eAUyWrOiSBDyTX2CiNAKDa/XZcCqUSLVoFgD3ZocticKZo/Y//+KZWrV/mFiu8VwCXxtyAZpiMSWZ+xQTVIIX7xuZAmfKV9dwZvFc+a+QjAi7JTjYPAC+YGzrzSgFQBjfkUE5xpu6YMrBFgvengUN5u/r88sPPMwog814PhI49Bg0R6W7DRSlSVInJcrd4RKAE7adnn4WPJFjMyQOngpusBz9k6xr6yQEqkYYqeQubuIvBUsHWUAIuMSW+drNyAMlxNyDRaR00pogYYe7zgkZl4ljHgZEEyjy17nqD4CPkoskOKbgU22UMA36UDOuUSEARqJZgpXdYBFaYc9754BiRSwAI9rkB+QucaGiMCLcaTrxbxOBTsoz9xr8nESgjWtPAg+ATZIupvwIcSv/dsAj8YKJ0JxeDAgvkUb9WnsUMWHhxKAb8yN+6CZC5WWWCA3TM5K7O9wtk+ECe4zdMb3UJlGIC29vnooKyyVZRDLhTtLT1ffBEfqDJESkFVp5YNXaKLodKzLWbQvAjfe0eAId6BYMT8iu2Bo7+6UUSGgCRCzICRjW3vkOgXPrY9pdRScyAGVngjvRI4xPgi9hBL4oCO2kz67bf9ayMgXL5F5LBk/jl5wAE9voTHJFfGtPOZPbxkPi0lIeBGyxaW5+XQAWZZ/0lClR2oevGcnAnuOFi8IU87zKIAktlx43r6q8NzRHSqB4dFCICT+7NCwUQNWgeA67Q0Wt6Na+v01pPR8d4UagcqpBQ456RqMpWfW8plBKXlNJgKVbfigFfFP6NKLCW4WZYt/4g99tpRVJUI/7AU/Dl+tx0ALmThxeCQ5IHuyYOmeEZIQALRQv/uYxBVQRTjK8qUD1hwkGXlcEFBKxkjO76AryRrqHAHsk6aK3bsKHJfO8HqfnlClRSuOSICDxhzrjIACjcDEPxmSh8mxncQNUSh1lFMagGk7ur/X8btWjq/FgANsrc9O6BP1IKapEnn3Md3LpJ897TdwVEJWXkFwulcppmaFohlwjS51tFgi8le9zxim+nHfhMksd8M7YY1bjVbVIyQZWkD+3qNLM/H7+iTcetiRKoRp9vehQ8oqA2OvuGxwSzNi3amYyctWKX94WgazeDb1y9fOH4yLqeMvCDFoQvO4tXYgY7SPFZSPf+XG8TqnVCd0EuqlLuq9/U/qYcQNiopqbH0+VQ6WHnxeARhZpRZIYdX+k4vFe3rgb6Bkamffrbzlnfe8pz8IEUJwXvsByZglfKl/cIx2cR2beF9QFUi3Fr5laCyor+bNHjlASvSU/1rDfyYi4DFTLG/c6APxQ0ohDkpSUlJqe/EDIImXMLPJBk3Nlk08/oB0e8cbHjGgU+A+HKhi4b9qF6wlnNdglRUeaydvPTCN55sbFjQ6eQAijF5K43LgR/KHAlc/5hCTgnjPee1NvOK9m3wx68kT3JPB7ax1zvMCp8/WEokTWm+aFyfEIW7WBySoKPxc5v03xhZBGqwxQm3vWybncf/KHAkXL3dZngmvDJXmvzZQ8ZiNbrR+Gts21WiaB1+TP/dzJxkTeUibPQPVaOj5ReGGD/hEEFoY56eq6RhagCKUm8sWni+OXTmxwGfyhwg/jPugeOiWM8rQZszcRLidbWIryVP0//PA0toy80ty+NmncOSoX21TsmxHvpW01Wl6IKwQ56bRbfzWPwqbLkYHe7YfP8ixDReC74Q4EbOTP2ycEp+bODVn09svHalU4b8V6Ece9wGlwpTX0cGl9MoFz25N/8cGfqRSh33aTlQQHeEEdM7n9OiqoFO7bXmxGYKsE78sJnN9xH9Rq1Lx0vxZsMkII3FDhB/pz6CFwiGT62Riuf4w3Zjg6heI+cadHvrgxckKVe3zCic8Muy6+lSaGE4myTqSJccwiCCgGGzfYU4ZWco4McE1C9h4sMWtruj3ianpOblfzk9vHFQzoaOwfL8VquU6d48IYCJ4rHbZCCQ/lXJ+tPicI76Q5WQnwg8WpsfLEcGlMkHh3ZVM/c0aabrs6oQ7ECVCtjXIebQND461DFz7DB+kwCScySgXuFUOr5bovWesa2U6aOH2zYUqf7lL9y8I7Is+lp8IYCJ+709AJ3ykIX6Q/1p/FeiNFafKx8f4t2h4qhoZyzQ+t3W3RbBJJ3bZlpy15bHwtRNfmppgsZIGjSXajk3+Ffc55kXBg/4xGBKrKQJb27dNY3NLVbdykbH7v6v8XgDQVOHOt0AlwRPdzYrfu2QnygONgpBJ+Qn+3aYlMuNKF4MFu317YUvFV8ZnQbox3JqNIza+OHAC453odqi36k/tiyyFcMVsrTEpKyy1FRTFcLGfhCgRM7OpwDN8Qxu3rqzorFx/LmWAhQwa1BjecmMqixfL9hpjuy8RE6aFyHUbckqEy0s5E7XgqY9gSq7Wzw22Q/ATSTNUH/GfhCgROb2p+HumQP/M6eO385+M69+w+j4xOTU1IS4x7d3T2gsWUgwSceDFyBSqLt69pEyFEzTNa+0ZsyUIEiYJSFrwAVMSHdRmTiJX+np1BtZZ09Umiq3KPZGfCFAifcOvhDTYITHeq3atWqfRejnmZ9BljZjLGzsxna27CZ+f5ifIqcN7qKyp7Pq9s7UIQaEQZ4PkMVRCdc7hNUkOPYzBev+M9MhEpia70H0BgJqOsCvlDghFuni1BClJEuxqeKdrQyc/Pz8/3r8J7Nrs5znCaNsx/nMHX28mOpqKjcfVAhqlDkrtPpSDFqgAjTUY2CWAafEu1r7CzFK/5znkOliHaTs6G5xx2HSMATCpxw6xyA6ogTr3hMcNganEnwQf7m7itSwU7KlDmoktTHSG9TNvhF3+w2OAGv+c9Lg0rrG5yQQXMZYzvHgicUOLGx0yVU7UWoh1WDf9X++V8tJh6PFuGtIg9LP7AVbnUc1bg7sunMpwz4lGirewFvBDqnQhXBYMMn4IBwS+Pj4AkFTmxvseRBKSph0vzndNYxsnFx27RqbO8uIz2uZ9B4SXB89iOwRQKHPEF1kuc0HhEiA38KF9XbQvBGkEsKVAnSXV4MDpCAX2eDJxQ4cbBJ20keF6OL8DHh4wN27bpNPRYvxktMVqDryOFz9t9MeFEUtSsbrEn/HJiPahV5tDL1LQdfhJ5NZxTjrevLkqACPatpEDgR3blfGfhBgRMnWy05Md/eceXR6wkCvFaWELh6QNv+Gx8RfFB4fk5/Y6s5y3yEYK9oSX8hqqc4b9Z1byH4ITndye453rnpGgcVUrrbpoITmQ7tw8EPCpzwa+sFOmbvpAHmY1b7XLl57fyBpdb63SZ4v0BFMRsH1qdGhxGwlj52KANlosa1XZ4GPsivmFrF4L3gJdFQwbPpYSk4Idpe1xP8oMCJKx09CABZ9P6ZIyxHjLAw7d5n3Pb7clQlw2tonZ5nBWArbshYKJfl2m7yYwYvSRTgEH13oHkEPgh1DYdywhFGj8GRSz9PpMELCpy4Y7COxhuFDwJ8/vK7napAtVK29tRd9xwsRRrNgQriIz2sr0kBlMRmM+AK82C48S185MHyG1DuWus1pWCDhkpPuvbMAS8ocOKhsasEaoiY1cHhLtgJ1V8GlYJHmJ8QAvLwIxEycINE2xoE4WPRKwOgFDO71U2wQYQSqJI9TfcyeEGBE8n955RAHVKfoUNOCsBGSMd1UC1xltm2fEB+3uWMEFwgMX+098UnYpf+BaVSDCdmgw1SlsRABcnen9aCFxQ4kWs5OQ/qSVref0M6WAjptAEsFG/ruzgBIKfHbkuD5kjMH21P4VPRE7ZCqZ26PjRYkd2RQJUb9UaKwQcKnCi1scuAmpizoxdFQ7U7+uvABu03bNwNGeD/+7SbcmiIPBmjdxwVhBnbZkKJUkuLBLCjCElmoMLTvl1iwAcKnJCMHfYUaot3dYmASmGGK8HO/fGDDpUCofYDtj2DRphHtq2PEnyK+NT51V2K6gW12ykGO8wzfxoqFCxqfBx8oMAJZrpZJNQnPOHxhIYKj8xng6U0l56rUoHUlb1svB6LUWPMfeu2JwkqyHX6b2OTa6gWM6dbGNgq3SuACvITP84m4AEFbrgYBqMmIoMKCJRLGWOtAEtle0wmPWQgCxzffdCC/ZfDYjLLaKiNDh1mcAYV0WebGO0Zbv0c1Xlu5FwItqQHohiocK9F/0LwgAI31nS8hBopLCZQrsjFIAFskYCBw2/KgYLT0/sYdu0+4I+Zaw4EPsiWQg2K64PMrqCSlNHfzpYGmbqWoRpeHfzAmuKmlwIqPLdtHwIeUODGJt2z4InitM46BqyF2w66LAMgfnzGbeoII53atVv2snfeHRhbBnbkvuYjwlCJyPNnnZOQeJkdJaiSZLRtElgj2YuLoYJwY51t4AEFbmz932HwJdW2032w92z60OsKvCbOuOfnuWTC8B6tdA0GTtvqH1sKlQp29XGKR2V3u1NDkoHCFUNCUKXIbrulYE+8LJSBcsT/J3sZuEeBG7vqeoIvivMtnQRgL2u81QOC90hxanjgUfcp3f/XcuDUXYHxAihBwmf22fgClWVNoX5YqACQPmtMHKqywTQEapAed1dAhejuPZLBPQrc+LPBbvAmf15zb6gh1nBBPioqu7dnaq96/2k1ZNrOgNgyVC19l4XNeRkqK9ut858W3nglfuz0VFRWNnxmLtTAxDmUQIW82c3PgnsUuPFnwz/Bn0gT8wSoYXmvh6hCSaS36xijBj/p9p+0wTs0Q4oKCk7a9V8VjyrQvhYzjXvF4LWwkQtzUMmtHkdpqKPUIZSBcvJjPy8G9yhwY2fzY+CP+GCz+QKwF9nDn0GVZBlhPhudrLu2bm04fOrGg0EPM8rkeKP47JR+04OkqEqUxfSUOfYivHHFcmkOKlo7JBJqEbutV0CFe20sy8A5Ctxwb3UWPMpxbHIC7ImHbSlD9UpT7p71XDLRytzUrI/VOCdX9+07d3i4z7JyOpOPKqWN6x2NczvxlsLfYmEGPlVus6AAalEEjxRAhfRx+vfBOQrc2NAxAHyKMDG+D/ZmOqZCBaYw6c75fSsnDzNo07L5b21N7Facz0PVXszveAZPTz7BOwr/oY4x+MT9vscYqIXkDo1ioJxkR4N94BwFbiwzvAE+SU60GpsO1nYMfgRWSMGzOxd9jh3zCXpSjmoUrGzvLslasECK9+grlsMvyfCRPcNCoSbhzC0KqBDUyJGAaxQ4wcw0iwCvilY2WiYEW5e7XQNXita2cSnAze7r8RES4WCyNhkfTJ+ZATVJT44QQ4Wng/q+ANcocEJkN/wZ+JVq1+gAA5ZiOx+VgxuFq/WmZ4DZ1/EiPpG8wmDQviy8lT9ipwxqYhJM4gmUK1uldx1co8CJnGETcsCzyD6tA8BSQbdVJeBExoKW01KAglmmyfhUiY9lG0vPZ3jtloU/1FYycg8N5YhfCzdwjQInHhkvEIJn8sAuPcPAjsLcIRNceDyu2eznAB6ajpGiAvJ0R78WfZZcKQKwZ0wk1CZ2t1VAhfgho+XgGAVOXG63mQHfRCfaWzwEO/bm8dCc5JxZo2UZeOlc05WoTBa993eddjab7pYvXpAJtdH3DNMJlBO59UwGxyhwYr/eUfCvbK+ebSxYWdT+PjSWtkav5a4XeEm0ocU5VIVJPj23S4POYzq4SaC+vN4nGahwbfBf4BgFTqzpFAgtKN7Wyj4ebGxvEkSgGdGZoY0GBZTjlRTbHjGoRmHYHoe237WfdTCqHGoSOjvQUCFv3WpwjAIX6OlmkdCGos0txsaDBd9mh2XQhPzqVN3GrjF4I0R3ZDmqRWfe3mPfvpnh6M0hAqhDfrHrC6jA3NpUBG5R4ELZqFGp0IpCd73R0VDtXuv1pai5Yv/pbX+y8SvEG/Sh2q5QSpF209OhXb2OY84JwB5JM7zEQIWCkGRwiwIXUgbME0A7ine0HR4JlRL1p+WihgQRHta6Pw7el0TwVqFzE2+oosi84zWpwagUqKF03HwaKjDlQnCLAhfCjLcw0JLSfZ37XoMqhUZDklED4rgzy0cY/Fp/1IF4Gd570tfoEVigswb0i4caJAd6CaB1FLhw1uwUtEboY9T5pBTKKfp1jIF6yIuI40utjJr/2HzYmsAUOT5y6dfhZWDFxiwGamDiOoUTaBsFLmwfchvaI7k6qIVbAZT7o9EdsFJ+5sKVS777N863NuvUpEEbq0UHQ56V4ROS7f+3iICV37s9gjoKLdcy0DYKXHAdlwQtUjycqDP1KZRy/mXgvOUbvPxCojNLZKhI8iIh7NRm1xBAerJly1YtdZq11e83bulev/DEQhoVZTk2Ogp2bDrehzpE7gMl0DYKHBA7LRVCqzLc2g0IkEOJdT9P8XJbMGXk4D59BlpY2Ts5L1+7YdPmzW4bVrnMnWgzzLxLu98a1TU+JRbvnjBj2dZ9p2+GxWUUy1GlB90MI8HO6A6RUAcd3imOQMsocCB93F4C7So53Vd3VQ6q5/7LsdIXqXERt/wOe7hMHm1haqhv0KVLF0OTwSMdpi5cv8vriI+f3+nbEjorI7dYJIcyF/5jWQx27NpHQC255nsYaBkFDtyx94W2SR/MaDXiKo3q7Kl3isZrivKCzOS4qPDQV8LCH8Unp78oFctpAIyEgWoi938sYMDO2LbhUItgqQ0DLaPAgZPTIqF9ucd66y1LQzWONfShwY10h0aHwJKDXhjUIr+mnwkto8CBLUtz8BlIolw6mB0uRZXO/XaBgBsPunYJB0sT9MKgFpJh6kOgXRQ0J1q8Q4HPoiDQvs3IAAmq4NcuCBzx/+/gQrA0oc09qKd07mQG2kVBcwnTT+EzodNPDGttf02KSnwNboEbIo/vZzNgaVy7cKhHdr5HEbSLguYCnG7hs5Em7RvUZtSFclRw1vgeuJE1tYEX2PqjQyTUQ54bBxFoFQXN7XROw2ckTjxi3W6oVyY+4W12H9yINu18ByyREV0eQk3F0xYQaBUFjQnmucnwWUmen3PUN5xzTYQP9ps/BDdu1DPPBUuKof3ioSbpaXMBtIqCxu7bHsbnJs8O2zqsk/myYAHe2mIZC04oDn03hQZL0gGjU6EmkmJ6l0CbKGjMyzIYXwBByrU1w7qYTTsSI8ZLK8YmgRNFS3/xAFvCvjPzoK4ixxUE2kRBU+VTx6Thi8AUp9zeNbm3ofnkLZcTx49NBidSbPUuga3cXpvKoS7JX0Ol0CYKmrprsFCGLwUjzE646eVs09es3k/GY1edfigg0FCUgUkS2Irr6c1AXSS57wNoEwUNKTwGX8MXhSl/kfbsnv9Bt4XT5zqvzYWGrtaxkYGtm4NuQH2F0zYSaBEFDYli4sX48hC5uLQgJ/vq+ixoRnHw365gzXviI6hPcvp3ObSIgoYYBcGX689DxdBM6epGR8DaxsVpUB9JHvgEWkTha0bPvC6HZjIn6UeBtUV7ylADhbM9oEUUvmZxdjHQUGzvfmVgSzjFj0ENSH1HyaE9FL5mh2elQUP3Ok4hYOvxlLuoCfJ8RDS0h8LXbO62Ymgo4LctYO3YwgTUSNHSrdAeCl8x8ejLCmiGHGt1Gawt21uKGpFdHiuH1lD4isU7xEBDIvfuKWAr0+k6QY2QNLtIaA2Fr1jQukxoKN9lBA22vFcmoYZKNm+E1lD4inn7C6Ch1LnLwZZ0zQU5akgRNr4c2kLhK3YlmYaGYp0vga0Qr+eosaypwdAWCl+xIhk0Fb87HyyJ/ONo1Jjg4HICLaHwFSPQWHE8AUsF2VLUHIl1KIKWUPibMoQGWwwDTeQt9oWWUPjbl0Hi70ygHRT+9mUgqdNToB0U/vaFKN7xJ7SDwt++EIrIpTS04v8Bk8gqtmoVNbwAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTQtMTAtMjNUMDk6NTI6MzYrMDg6MDBkl78dAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE0LTEwLTIzVDA5OjUyOjM2KzA4OjAwFcoHoQAAAABJRU5ErkJggg==" alt="" width="188" height="120" />

P.S.多组数据的题目,KD-Tree一定要记得清空 l 和 r ……要不然叶子节点会有一些奇怪的问题……

获得称号:

aaarticlea/png;base64,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" alt="" />

 /**************************************************************
Problem: 3053
User: Tunix
Language: C++
Result: Accepted
Time:1364 ms
Memory:9088 kb
****************************************************************/ //BZOJ 3053
#include<queue>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
#define sqr(x) ((x)*(x))
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=,INF=1e9;
/*******************template********************/ int n,k,D,root,ans[];
struct node{
int d[],mn[],mx[],l,r;
int& operator [] (int x){return d[x];}
void read(){rep(i,k) d[i]=getint();}
}t[N],tmp;
bool operator < (node a,node b){return a[D]<b[D];}
#define L t[o].l
#define R t[o].r
#define mid (l+r>>1)
inline void Push_up(int o){
rep(i,k){
t[o].mn[i]=min(t[o].mn[i],min(t[L].mn[i],t[R].mn[i]));
t[o].mx[i]=max(t[o].mx[i],max(t[L].mx[i],t[R].mx[i]));
}
}
int build(int l,int r,int dir){
D=dir;
nth_element(t+l,t+mid,t+r+);
rep(i,k) t[mid].mn[i]=t[mid].mx[i]=t[mid][i];
t[mid].l=l<mid ? build(l,mid-,(dir+)%k) : ;
t[mid].r=mid<r ? build(mid+,r,(dir+)%k) : ;
Push_up(mid);
return mid;
}
inline int getdis(int o){
if (!o) return INF;
int ans=;
rep(i,k) if (tmp[i]<t[o].mn[i]) ans+=sqr(t[o].mn[i]-tmp[i]);
rep(i,k) if (tmp[i]>t[o].mx[i]) ans+=sqr(tmp[i]-t[o].mx[i]);
return ans;
}
inline int dis(node a,node b){
int ans=;
rep(i,k) ans+=sqr(a[i]-b[i]);
return ans;
}
typedef pair<int,int> pii;
priority_queue<pii>Q;
#define mp make_pair
#define X first
#define Y second
void query(int o){
int dl=getdis(L),dr=getdis(R),d0=dis(t[o],tmp);
if (d0<Q.top().X){Q.pop(); Q.push(mp(d0,o));}
if (dl<dr){
if (dl<Q.top().X) query(L);
if (dr<Q.top().X) query(R);
}else{
if (dr<Q.top().X) query(R);
if (dl<Q.top().X) query(L);
}
}
int main(){
#ifndef ONLINE_JUDGE
freopen("3053.in","r",stdin);
freopen("3053.out","w",stdout);
#endif
rep(i,) t[].mn[i]=INF,t[].mx[i]=-INF;
while(scanf("%d%d",&n,&k)!=EOF){
F(i,,n) rep(j,k) t[i][j]=getint();
root=build(,n,);
int T=getint();
while(T--){
rep(j,k) tmp[j]=getint();
n=getint();
printf("the closest %d points are:\n",n);
F(i,,n) Q.push(mp(INF,));
query(root);
D(i,n,) ans[i]=Q.top().Y,Q.pop();
F(i,,n) rep(j,k)
printf("%d%c",t[ans[i]][j],j!=k-?' ':'\n');
}
}
return ;
}

3053: The Closest M Points

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 383  Solved: 147
[Submit][Status][Discuss]

Description

The
course of Software Design and Development Practice is objectionable.
ZLC is facing a serious problem .There are many points in K-dimensional
space .Given a point. ZLC need to find out the closest m points.
Euclidean distance is used as the distance metric between two points.
The Euclidean distance between points p and q is the length of the line
segment connecting them.In Cartesian coordinates, if p = (p1, p2,...,
pn) and q = (q1, q2,..., qn) are two points in Euclidean n-space, then
the distance from p to q, or from q to p is given by:
D(p,q)=D(q,p)=sqrt((q1-p1)^2+(q2-p2)^2+(q3-p3)^2…+(qn-pn)^2
Can you help him solve this problem?

软工学院的课程很讨厌!ZLC同志遇到了一个头疼的问题:在K维空间里面有许多的点,对于某些给定的点,ZLC需要找到和它最近的m个点。

(这里的距离指的是欧几里得距离:D(p, q) = D(q, p) =  sqrt((q1 - p1) ^ 2 + (q2 - p2) ^ 2 + (q3 - p3) ^ 2 + ... + (qn - pn) ^ 2)

ZLC要去打Dota,所以就麻烦你帮忙解决一下了……

【Input】

第一行,两个非负整数:点数n(1 <= n <= 50000),和维度数k(1 <= k <= 5)。
接下来的n行,每行k个整数,代表一个点的坐标。
接下来一个正整数:给定的询问数量t(1 <= t <= 10000)
下面2*t行:
  第一行,k个整数:给定点的坐标
  第二行:查询最近的m个点(1 <= m <= 10)

所有坐标的绝对值不超过10000。
有多组数据!

【Output】

对于每个询问,输出m+1行:
第一行:"the closest m points are:" m为查询中的m
接下来m行每行代表一个点,按照从近到远排序。

保证方案唯一,下面这种情况不会出现:
2 2
1 1
3 3
1
2 2
1

Input

In the
first line of the text file .there are two non-negative integers n and
K. They denote respectively: the number of points, 1 <= n <=
50000, and the number of Dimensions,1 <= K <= 5. In each of the
following n lines there is written k integers, representing the
coordinates of a point. This followed by a line with one positive
integer t, representing the number of queries,1 <= t <=10000.each
query contains two lines. The k integers in the first line represent the
given point. In the second line, there is one integer m, the number of
closest points you should find,1 <= m <=10. The absolute value of
all the coordinates will not be more than 10000.
There are multiple test cases. Process to end of file.

Output

For each query, output m+1 lines:
The first line saying :”the closest m points are:” where m is the number of the points.
The following m lines representing m points ,in accordance with the order from near to far
It is guaranteed that the answer can only be formed in one ways. The
distances from the given point to all the nearest m+1 points are
different. That means input like this:
2 2
1 1
3 3
1
2 2
1
will not exist.

Sample Input

3 2
1 1
1 3
3 4
2
2 3
2
2 3
1

Sample Output

the closest 2 points are:
1 3
3 4
the closest 1 points are:
1 3

HINT

Source

[Submit][Status][Discuss]

上一篇:MFC 编辑框中字体大小改变,行高不能改变,只能显示一半的问题,已解决。


下一篇:Node.js简单介绍