//#pragma GCC optimize("O3")
//#pragma GCC target("avx2")
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <unordered_map>
using namespace std;
#define fastInp cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
typedef long long ll;
typedef long double ld;
const ll SZ = 2050, INF = 1e9 * 1e9;
ll grid[SZ][SZ], pt[SZ];
vector<tuple<ll, ll, ll>> vec;
ll n, m, mx;
pair<ll, ll> pos;
void inc(ll ht) {
while (pt[ht + 1] < pt[ht] + 1) {
inc(ht + 1);
if (mx == INF) return;
}
if (make_pair(ht, pt[ht]) == pos) {
mx = INF;
pt[ht] = INF;
return;
}
mx = max(mx, grid[ht][pt[ht]]);
pt[ht]++;
}
ll find() {
vec.clear();
for (int i = 0; i < n; i++) {
pt[i] = 0;
for (int j = 0; j < m; j++) {
vec.push_back({ grid[i][j], i, j });
}
}
pt[n] = INF;
sort(vec.begin(), vec.end());
mx = get<0>(vec[0]);
pos = { get<1>(vec.back()), get<2>(vec.back()) };
ll ans = INF, st = get<0>(vec.back());
for (int i = 0; i < vec.size(); i++) {
ll x = get<1>(vec[i]), y = get<2>(vec[i]);
while (pt[x] <= y) {
inc(x);
}
if (mx == INF) break;
ans = min(ans, max(mx - get<0>(vec[0]), st - get<0>(vec[i + 1])));
}
return ans;
}
int main() {
fastInp;
cin >> n >> m;
pair<ll, ll> cur = { INF, -INF };
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> grid[i][j];
cur.first = min(cur.first, grid[i][j]);
cur.second = max(cur.second, grid[i][j]);
}
}
ll ans = (cur.second - cur.first);
ans = min(ans, find());
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
ll snd = m - j - 1;
if (j < snd) swap(grid[i][j], grid[i][snd]);
}
}
ans = min(ans, find());
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
ll snd = n - i - 1;
if (i < snd) swap(grid[i][j], grid[snd][j]);
}
}
ans = min(ans, find());
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
ll snd = m - j - 1;
if (j < snd) swap(grid[i][j], grid[i][snd]);
}
}
ans = min(ans, find());
cout << ans;
return 0;
}
Compilation message
joioi.cpp: In function 'll find()':
joioi.cpp:57:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::tuple<long long int, long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
57 | for (int i = 0; i < vec.size(); i++) {
| ~~^~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
332 KB |
Output is correct |
7 |
Correct |
1 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
332 KB |
Output is correct |
9 |
Correct |
0 ms |
332 KB |
Output is correct |
10 |
Correct |
1 ms |
336 KB |
Output is correct |
11 |
Correct |
1 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
332 KB |
Output is correct |
13 |
Correct |
1 ms |
324 KB |
Output is correct |
14 |
Correct |
1 ms |
332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
332 KB |
Output is correct |
7 |
Correct |
1 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
332 KB |
Output is correct |
9 |
Correct |
0 ms |
332 KB |
Output is correct |
10 |
Correct |
1 ms |
336 KB |
Output is correct |
11 |
Correct |
1 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
332 KB |
Output is correct |
13 |
Correct |
1 ms |
324 KB |
Output is correct |
14 |
Correct |
1 ms |
332 KB |
Output is correct |
15 |
Correct |
2 ms |
460 KB |
Output is correct |
16 |
Correct |
28 ms |
3268 KB |
Output is correct |
17 |
Correct |
25 ms |
3396 KB |
Output is correct |
18 |
Correct |
22 ms |
3396 KB |
Output is correct |
19 |
Correct |
28 ms |
3396 KB |
Output is correct |
20 |
Correct |
19 ms |
3268 KB |
Output is correct |
21 |
Correct |
26 ms |
3524 KB |
Output is correct |
22 |
Correct |
21 ms |
3560 KB |
Output is correct |
23 |
Correct |
22 ms |
3524 KB |
Output is correct |
24 |
Correct |
23 ms |
3396 KB |
Output is correct |
25 |
Correct |
26 ms |
3524 KB |
Output is correct |
26 |
Correct |
22 ms |
3524 KB |
Output is correct |
27 |
Correct |
22 ms |
3496 KB |
Output is correct |
28 |
Correct |
22 ms |
3524 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
332 KB |
Output is correct |
7 |
Correct |
1 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
332 KB |
Output is correct |
9 |
Correct |
0 ms |
332 KB |
Output is correct |
10 |
Correct |
1 ms |
336 KB |
Output is correct |
11 |
Correct |
1 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
332 KB |
Output is correct |
13 |
Correct |
1 ms |
324 KB |
Output is correct |
14 |
Correct |
1 ms |
332 KB |
Output is correct |
15 |
Correct |
2 ms |
460 KB |
Output is correct |
16 |
Correct |
28 ms |
3268 KB |
Output is correct |
17 |
Correct |
25 ms |
3396 KB |
Output is correct |
18 |
Correct |
22 ms |
3396 KB |
Output is correct |
19 |
Correct |
28 ms |
3396 KB |
Output is correct |
20 |
Correct |
19 ms |
3268 KB |
Output is correct |
21 |
Correct |
26 ms |
3524 KB |
Output is correct |
22 |
Correct |
21 ms |
3560 KB |
Output is correct |
23 |
Correct |
22 ms |
3524 KB |
Output is correct |
24 |
Correct |
23 ms |
3396 KB |
Output is correct |
25 |
Correct |
26 ms |
3524 KB |
Output is correct |
26 |
Correct |
22 ms |
3524 KB |
Output is correct |
27 |
Correct |
22 ms |
3496 KB |
Output is correct |
28 |
Correct |
22 ms |
3524 KB |
Output is correct |
29 |
Execution timed out |
4090 ms |
151448 KB |
Time limit exceeded |
30 |
Halted |
0 ms |
0 KB |
- |