// Zende bad Shoma nasime faghat !
#include <bits/stdc++.h>
#define pb push_back
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x) cerr << #x << " : " << x << '\n'
using namespace std;
typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
const ll Mod = 1000000007LL;
const int N = 2e5 + 10;
const ll Inf = 2242545357980376863LL;
const ll Log = 30;
int n, k;
int L[N], R[N], U[N], D[N];
vector<int> uX, uY;
vector<pii> points;
void Done(){
for(auto x : points) printf("%d %d\n", uX[x.F], uY[x.S]);
exit(0);
}
int mk[N];
void On(pii P, int col){
for(int i = 0; i < n; i++){
if(L[i] <= P.F && P.F <= R[i] && D[i] <= P.S && P.S <= U[i] && !mk[i]) mk[i] = col;
}
points.pb(P);
}
void Off(int col){
for(int i = 0; i < n; i++)
if(mk[i] == col)
mk[i] = 0;
points.pop_back();
}
void Solve(int y){
if(y == 0){
for(int i = 0; i < n; i++)
if(!mk[i])
return ;
}
int mnx = N, mxx = -1;
for(int i = 0; i < n; i++)
if(!mk[i])
mnx = min(mnx, R[i]), mxx = max(mxx, L[i]);
if(mxx == -1){
for(int i = 0; i < y; i++) points.pb(pii(0, 0));
Done();
}
int mny = N, mxy = -1;
for(int i = 0; i < n; i++)
if(!mk[i])
mny = min(mny, U[i]), mxy = max(mxy, D[i]);
for(int px : {mnx, mxx}){
for(int py : {mny, mxy}){
On({px, py}, y);
Solve(y - 1);
Off(y);
}
}
}
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
scanf("%d%d", &n, &k);
for(int i = 0; i < n; i++) scanf("%d%d%d%d", L + i, D + i, R + i, U + i);
for(int i = 0; i < n; i++) uX.pb(L[i]), uY.pb(D[i]), uX.pb(R[i]), uY.pb(U[i]);
sort(all(uX)); uX.resize(unique(all(uX)) - uX.begin());
sort(all(uY)); uY.resize(unique(all(uY)) - uY.begin());
for(int i = 0; i < n; i++){
L[i] = lower_bound(all(uX), L[i]) - uX.begin();
R[i] = lower_bound(all(uX), R[i]) - uX.begin();
U[i] = lower_bound(all(uY), U[i]) - uY.begin();
D[i] = lower_bound(all(uY), D[i]) - uY.begin();
}
//assert(k <= 3);
Solve(k);
return 0;
}
Compilation message
hamburg.cpp: In function 'int main()':
hamburg.cpp:83:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
83 | scanf("%d%d", &n, &k);
| ~~~~~^~~~~~~~~~~~~~~~
hamburg.cpp:84:34: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
84 | for(int i = 0; i < n; i++) scanf("%d%d%d%d", L + i, D + i, R + i, U + i);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
500 KB |
Output is correct |
2 |
Correct |
3 ms |
384 KB |
Output is correct |
3 |
Correct |
4 ms |
384 KB |
Output is correct |
4 |
Correct |
3 ms |
512 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
384 KB |
Output is correct |
2 |
Correct |
3 ms |
384 KB |
Output is correct |
3 |
Correct |
4 ms |
384 KB |
Output is correct |
4 |
Correct |
4 ms |
424 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
384 KB |
Output is correct |
2 |
Correct |
3 ms |
512 KB |
Output is correct |
3 |
Correct |
3 ms |
512 KB |
Output is correct |
4 |
Correct |
3 ms |
384 KB |
Output is correct |
5 |
Correct |
3 ms |
384 KB |
Output is correct |
6 |
Correct |
3 ms |
384 KB |
Output is correct |
7 |
Correct |
4 ms |
384 KB |
Output is correct |
8 |
Correct |
3 ms |
384 KB |
Output is correct |
9 |
Correct |
7 ms |
452 KB |
Output is correct |
10 |
Correct |
6 ms |
416 KB |
Output is correct |
11 |
Correct |
4 ms |
512 KB |
Output is correct |
12 |
Correct |
5 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
512 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
3 ms |
384 KB |
Output is correct |
4 |
Correct |
3 ms |
384 KB |
Output is correct |
5 |
Correct |
3 ms |
384 KB |
Output is correct |
6 |
Correct |
3 ms |
384 KB |
Output is correct |
7 |
Correct |
3 ms |
512 KB |
Output is correct |
8 |
Correct |
3 ms |
512 KB |
Output is correct |
9 |
Correct |
5 ms |
384 KB |
Output is correct |
10 |
Correct |
6 ms |
384 KB |
Output is correct |
11 |
Correct |
4 ms |
512 KB |
Output is correct |
12 |
Correct |
4 ms |
512 KB |
Output is correct |
13 |
Correct |
10 ms |
384 KB |
Output is correct |
14 |
Incorrect |
12 ms |
384 KB |
Unexpected end of file - int32 expected |
15 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
500 KB |
Output is correct |
2 |
Correct |
3 ms |
384 KB |
Output is correct |
3 |
Correct |
4 ms |
384 KB |
Output is correct |
4 |
Correct |
3 ms |
512 KB |
Output is correct |
5 |
Correct |
420 ms |
7576 KB |
Output is correct |
6 |
Correct |
397 ms |
7584 KB |
Output is correct |
7 |
Correct |
366 ms |
7768 KB |
Output is correct |
8 |
Correct |
367 ms |
7760 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
384 KB |
Output is correct |
2 |
Correct |
3 ms |
384 KB |
Output is correct |
3 |
Correct |
4 ms |
384 KB |
Output is correct |
4 |
Correct |
4 ms |
424 KB |
Output is correct |
5 |
Correct |
367 ms |
7648 KB |
Output is correct |
6 |
Correct |
377 ms |
7644 KB |
Output is correct |
7 |
Correct |
372 ms |
7772 KB |
Output is correct |
8 |
Correct |
404 ms |
7536 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
384 KB |
Output is correct |
2 |
Correct |
3 ms |
512 KB |
Output is correct |
3 |
Correct |
3 ms |
512 KB |
Output is correct |
4 |
Correct |
3 ms |
384 KB |
Output is correct |
5 |
Correct |
3 ms |
384 KB |
Output is correct |
6 |
Correct |
3 ms |
384 KB |
Output is correct |
7 |
Correct |
4 ms |
384 KB |
Output is correct |
8 |
Correct |
3 ms |
384 KB |
Output is correct |
9 |
Correct |
7 ms |
452 KB |
Output is correct |
10 |
Correct |
6 ms |
416 KB |
Output is correct |
11 |
Correct |
4 ms |
512 KB |
Output is correct |
12 |
Correct |
5 ms |
384 KB |
Output is correct |
13 |
Correct |
397 ms |
7656 KB |
Output is correct |
14 |
Correct |
400 ms |
7644 KB |
Output is correct |
15 |
Correct |
376 ms |
7604 KB |
Output is correct |
16 |
Correct |
377 ms |
7652 KB |
Output is correct |
17 |
Correct |
401 ms |
7544 KB |
Output is correct |
18 |
Correct |
387 ms |
7632 KB |
Output is correct |
19 |
Correct |
378 ms |
7636 KB |
Output is correct |
20 |
Correct |
385 ms |
7640 KB |
Output is correct |
21 |
Correct |
555 ms |
7768 KB |
Output is correct |
22 |
Correct |
466 ms |
7784 KB |
Output is correct |
23 |
Correct |
463 ms |
7644 KB |
Output is correct |
24 |
Correct |
464 ms |
7636 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
512 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
3 ms |
384 KB |
Output is correct |
4 |
Correct |
3 ms |
384 KB |
Output is correct |
5 |
Correct |
3 ms |
384 KB |
Output is correct |
6 |
Correct |
3 ms |
384 KB |
Output is correct |
7 |
Correct |
3 ms |
512 KB |
Output is correct |
8 |
Correct |
3 ms |
512 KB |
Output is correct |
9 |
Correct |
5 ms |
384 KB |
Output is correct |
10 |
Correct |
6 ms |
384 KB |
Output is correct |
11 |
Correct |
4 ms |
512 KB |
Output is correct |
12 |
Correct |
4 ms |
512 KB |
Output is correct |
13 |
Correct |
10 ms |
384 KB |
Output is correct |
14 |
Incorrect |
12 ms |
384 KB |
Unexpected end of file - int32 expected |
15 |
Halted |
0 ms |
0 KB |
- |