Submission #48244101
Source Code Expand
// LUOGU_RID: 138522029
//Problem:
#include<iostream>
#include<algorithm>
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define i32 INT_MAX
#define i64 LONG_LONG_MAX
#define pii std::pair<int, int>
#define pll std::pair<long long, long long>
#define pb push_back
#define fore(i,u,v) for(int i=head[u],v;i;i=e[i].nxt)
typedef long long ll;
const int N = 2e5 + 10;
ll read(){ll x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}return x*f;}
void print(ll x){if(x<0)putchar('-'),x=-x;if(x>9)print(x/10);putchar(x%10+48);}
char gc(){char c=getchar();while(c==' '||c=='\n')c=getchar();return c;}
void pc(char Char){std::putchar(Char);}
int n;
ll k;
ll x[N], y[N], xs[N], ys[N];
bool check(ll len) {
ll minx = INF, miny = INF, res;
for(int i = 1; i <= n; i++) {
// [ x[i], x[i] + len ]
int Left = i - 1, Right = std::upper_bound(x + i + 1, x + n + 1, x[i] + len) - x;
res = 0;
if(Left >= 1) {
res += x[i] * Left - xs[Left];
}
if(Right <= n) {
res += xs[n] - xs[Right - 1] - (x[i] + len) * (n - Right + 1);
}
minx = std::min(minx, res);
// [ x[i] - len, x[i] ]
Left = std::lower_bound(x + 1, x + i + 1, x[i] - len) - x - 1, Right = i + 1;
res = 0;
if(Left >= 1) {
res += (x[i] - len) * Left - xs[Left];
}
if(Right <= n) {
res += xs[n] - xs[Right - 1] - x[i] * (n - Right + 1);
}
minx = std::min(minx, res);
}
for(int i = 1; i <= n; i++) {
// [ y[i], y[i] + len ]
int Left = i - 1, Right = std::upper_bound(y + i + 1, y + n + 1, y[i] + len) - y;
res = 0;
if(Left >= 1) {
res += y[i] * Left - ys[Left];
}
if(Right <= n) {
res += ys[n] - ys[Right - 1] - (y[i] + len) * (n - Right + 1);
}
miny = std::min(miny, res);
// [ y[i] - len, y[i] ]
Left = std::lower_bound(y + 1, y + i + 1, y[i] - len) - y - 1, Right = i + 1;
res = 0;
if(Left >= 1) {
res += (y[i] - len) * Left - ys[Left];
}
if(Right <= n) {
res += ys[n] - ys[Right - 1] - y[i] * (n - Right + 1);
}
miny = std::min(miny, res);
}
if(minx + miny > k) return 0;
return 1;
}
int main() {
std::cin >> n >> k;
for(int i = 1; i <= n; i++) {
x[i] = read();
y[i] = read();
}
std::sort(x + 1, x + n + 1);
std::sort(y + 1, y + n + 1);
for(int i = 1; i <= n; i++) {
xs[i] = xs[i - 1] + x[i];
ys[i] = ys[i - 1] + y[i];
}
ll l = 0, r = std::max(x[n] - x[1], y[n] - y[1]), ans = -1145141919810;
while(l <= r) {
ll mid = l + r >> 1;
if(check(mid)) {
ans = mid;
r = mid - 1;
} else l = mid + 1;
}
std::cout << ans << '\n';
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Minimize Bounding Square |
| User | CWzwz |
| Language | C++ 17 (gcc 12.2) |
| Score | 525 |
| Code Size | 3061 Byte |
| Status | AC |
| Exec Time | 734 ms |
| Memory | 9920 KiB |
Compile Error
Main.cpp: In function ‘int main()’:
Main.cpp:88:20: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
88 | ll mid = l + r >> 1;
| ~~^~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 525 / 525 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | hack_01.txt, hack_02.txt, hack_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt, test_71.txt, test_72.txt, test_73.txt, test_74.txt, test_75.txt, test_76.txt, test_77.txt, test_78.txt, test_79.txt, test_80.txt, test_81.txt, test_82.txt, test_83.txt, test_84.txt, test_85.txt, test_86.txt, test_87.txt, test_88.txt, test_89.txt, test_90.txt, test_91.txt, test_92.txt, test_93.txt, test_94.txt, test_95.txt, test_96.txt, test_97.txt, test_98.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| hack_01.txt | AC | 677 ms | 9724 KiB |
| hack_02.txt | AC | 679 ms | 9700 KiB |
| hack_03.txt | AC | 690 ms | 9848 KiB |
| sample_01.txt | AC | 1 ms | 3620 KiB |
| sample_02.txt | AC | 1 ms | 3544 KiB |
| sample_03.txt | AC | 1 ms | 3532 KiB |
| test_01.txt | AC | 1 ms | 3548 KiB |
| test_02.txt | AC | 1 ms | 3620 KiB |
| test_03.txt | AC | 1 ms | 3428 KiB |
| test_04.txt | AC | 1 ms | 3540 KiB |
| test_05.txt | AC | 1 ms | 3540 KiB |
| test_06.txt | AC | 1 ms | 3552 KiB |
| test_07.txt | AC | 1 ms | 3504 KiB |
| test_08.txt | AC | 1 ms | 3428 KiB |
| test_09.txt | AC | 1 ms | 3552 KiB |
| test_10.txt | AC | 1 ms | 3628 KiB |
| test_11.txt | AC | 1 ms | 3620 KiB |
| test_12.txt | AC | 1 ms | 3624 KiB |
| test_13.txt | AC | 1 ms | 3556 KiB |
| test_14.txt | AC | 1 ms | 3468 KiB |
| test_15.txt | AC | 1 ms | 3540 KiB |
| test_16.txt | AC | 1 ms | 3500 KiB |
| test_17.txt | AC | 1 ms | 3544 KiB |
| test_18.txt | AC | 1 ms | 3552 KiB |
| test_19.txt | AC | 1 ms | 3548 KiB |
| test_20.txt | AC | 1 ms | 3548 KiB |
| test_21.txt | AC | 1 ms | 3556 KiB |
| test_22.txt | AC | 1 ms | 3504 KiB |
| test_23.txt | AC | 1 ms | 3536 KiB |
| test_24.txt | AC | 1 ms | 3616 KiB |
| test_25.txt | AC | 1 ms | 3488 KiB |
| test_26.txt | AC | 1 ms | 3428 KiB |
| test_27.txt | AC | 734 ms | 9784 KiB |
| test_28.txt | AC | 18 ms | 3732 KiB |
| test_29.txt | AC | 182 ms | 5188 KiB |
| test_30.txt | AC | 539 ms | 9724 KiB |
| test_31.txt | AC | 460 ms | 8876 KiB |
| test_32.txt | AC | 371 ms | 9736 KiB |
| test_33.txt | AC | 629 ms | 9660 KiB |
| test_34.txt | AC | 271 ms | 6760 KiB |
| test_35.txt | AC | 722 ms | 9580 KiB |
| test_36.txt | AC | 421 ms | 9860 KiB |
| test_37.txt | AC | 430 ms | 8616 KiB |
| test_38.txt | AC | 379 ms | 8064 KiB |
| test_39.txt | AC | 539 ms | 9720 KiB |
| test_40.txt | AC | 82 ms | 5004 KiB |
| test_41.txt | AC | 32 ms | 3976 KiB |
| test_42.txt | AC | 723 ms | 9764 KiB |
| test_43.txt | AC | 684 ms | 9592 KiB |
| test_44.txt | AC | 47 ms | 4304 KiB |
| test_45.txt | AC | 539 ms | 9704 KiB |
| test_46.txt | AC | 415 ms | 8520 KiB |
| test_47.txt | AC | 57 ms | 4300 KiB |
| test_48.txt | AC | 376 ms | 9728 KiB |
| test_49.txt | AC | 379 ms | 8012 KiB |
| test_50.txt | AC | 52 ms | 4004 KiB |
| test_51.txt | AC | 676 ms | 9708 KiB |
| test_52.txt | AC | 539 ms | 9612 KiB |
| test_53.txt | AC | 375 ms | 8080 KiB |
| test_54.txt | AC | 538 ms | 9732 KiB |
| test_55.txt | AC | 378 ms | 7976 KiB |
| test_56.txt | AC | 355 ms | 9376 KiB |
| test_57.txt | AC | 610 ms | 9704 KiB |
| test_58.txt | AC | 261 ms | 6556 KiB |
| test_59.txt | AC | 389 ms | 8132 KiB |
| test_60.txt | AC | 538 ms | 9708 KiB |
| test_61.txt | AC | 559 ms | 8324 KiB |
| test_62.txt | AC | 459 ms | 9048 KiB |
| test_63.txt | AC | 541 ms | 9700 KiB |
| test_64.txt | AC | 276 ms | 8256 KiB |
| test_65.txt | AC | 265 ms | 6308 KiB |
| test_66.txt | AC | 611 ms | 9860 KiB |
| test_67.txt | AC | 262 ms | 6736 KiB |
| test_68.txt | AC | 286 ms | 6120 KiB |
| test_69.txt | AC | 539 ms | 9768 KiB |
| test_70.txt | AC | 336 ms | 8200 KiB |
| test_71.txt | AC | 387 ms | 8148 KiB |
| test_72.txt | AC | 374 ms | 9700 KiB |
| test_73.txt | AC | 118 ms | 4828 KiB |
| test_74.txt | AC | 42 ms | 4040 KiB |
| test_75.txt | AC | 27 ms | 9732 KiB |
| test_76.txt | AC | 27 ms | 9724 KiB |
| test_77.txt | AC | 669 ms | 9848 KiB |
| test_78.txt | AC | 689 ms | 9780 KiB |
| test_79.txt | AC | 695 ms | 9696 KiB |
| test_80.txt | AC | 690 ms | 9776 KiB |
| test_81.txt | AC | 689 ms | 9780 KiB |
| test_82.txt | AC | 691 ms | 9784 KiB |
| test_83.txt | AC | 512 ms | 9708 KiB |
| test_84.txt | AC | 433 ms | 9724 KiB |
| test_85.txt | AC | 433 ms | 9784 KiB |
| test_86.txt | AC | 433 ms | 9768 KiB |
| test_87.txt | AC | 434 ms | 9792 KiB |
| test_88.txt | AC | 361 ms | 9728 KiB |
| test_89.txt | AC | 449 ms | 9788 KiB |
| test_90.txt | AC | 434 ms | 9708 KiB |
| test_91.txt | AC | 434 ms | 9732 KiB |
| test_92.txt | AC | 435 ms | 9728 KiB |
| test_93.txt | AC | 437 ms | 9920 KiB |
| test_94.txt | AC | 434 ms | 9732 KiB |
| test_95.txt | AC | 435 ms | 9856 KiB |
| test_96.txt | AC | 357 ms | 9856 KiB |
| test_97.txt | AC | 418 ms | 9728 KiB |
| test_98.txt | AC | 417 ms | 9700 KiB |