# MK Beginner Round #3 ## A. Đi học nghề phụ hồ Người ra đề: HickWhither Vì ô cửa sổ và bức tường đều là hình vuông nên ta có thể tính được kết quả như sau $\lfloor\frac{N}{K}\rfloor^2$. ### Code (By Swyrin) ```cpp #include <bits/stdc++.h> using namespace std; #pragma GCC optimize("Ofast") #define int long long #define all(x) (x).begin(), (x).end() #define sz(x) (x).size() signed main () { ios_base::sync_with_stdio (false); cin.tie (nullptr); int t; cin >> t; for (int i = 1; i <= t; ++i) { int n, k; cin >> n >> k; int cnt = (n / k) * (n / k); cout << cnt << endl; } return 0; } ``` ## B. Đua thuyền Người ra đề: GiaoSu Khi sắp xếp lại vị trí của những chiếc thuyền, ta có thể dễ dàng biết được khoảng cách giữa các thuyền gần kề nhau từ đó suy ra kết quả. ### Code (By Swyrin) ```cpp #include <bits/stdc++.h> using namespace std; #pragma GCC optimize("Ofast") #define int long long #define all(x) (x).begin(), (x).end() #define sz(x) (x).size() signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector<int> a(n); for (int &v: a) cin >> v; sort(all(a)); int mean = INT_MAX; for (int i = 1; i < n; ++i) { mean = min(mean, a[i] - a[i - 1]); } cout << mean; return 0; } ``` ## C. Yugi bán hàng Người ra đề: YugiHacker Đầu tiên hãy xem xét một vài ví dụ sau: 1. $n=11,k=3$ Một trong số các cách bố trí gian hàng ở trường hợp tốt nhất ("." là vị trí có thể đặt gian hàng, "X" là vị trí các gian hàng được đặt sẵn, "*" là vị trí không thể đặt gian hàng): ``` . X . . X . . X . * * ``` 2. $n=5,k=3$ ``` X . . X X ``` Từ đó có thể rút ra nhận xét sẽ luôn là tối ưu để đặt các gian hàng cách nhau 2 ô nhiều nhất có thể. Khi đó số gian hàng có thể đặt trong trường hợp tốt nhất là $min(n-k,k\cdot2)$. Ngoài ra còn một vài trường hợp đặc biệt cần xét. ### Code (By Ice Cream) ```cpp #include <bits/stdc++.h> using namespace std; #define FASTIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define ll long long #define ld long double #define ar array #include<cstdio> #define vt vector #include<fstream> //ifstream fin("template.in"); //ifstream fin("template.in"); #include<fstream> #define pb push_back #define all(c) (c).begin(), (c).end() //#define length(x) (int)(x).size() #define fi first #define se second #define vt vector const int mxn = 2e5; int main() { FASTIO; ll n, k; cin >> n >> k; ll mn = min((ll)1, n - k); ll mx = min(k * 2, n - k); cout << mn << " " << mx; return 0; } ```