# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
1038899 |
2024-07-30T08:49:05 Z |
vjudge1 |
Domino (COCI15_domino) |
C++17 |
|
4000 ms |
373372 KB |
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
typedef long long ll;
typedef pair<ll, ll> pii;
const ll N = 2e3 + 10, K = 8;
ll n, k, mat[N][N], exist[N][N], mark[N][N];
vector<pii> cells, my_cells;
ll dx[4] = {0, 1, 0, -1};
ll dy[4] = {1, 0, -1, 0};
bool done;
long long ans, total;
void dfs(ll i){
if (i >= my_cells.size()){
done = 1;
return;
}
auto p = my_cells[i];
if (mark[p.F][p.S]){
dfs(i + 1);
return;
}
mark[p.F][p.S] = 1;
for (ll i = 0; i < 4; i ++){
ll nx = p.F + dx[i];
ll ny = p.S + dy[i];
if (!exist[nx][ny]) continue;
if (mark[nx][ny]) continue;
mark[nx][ny] = 1;
dfs(i + 1);
mark[nx][ny] = 0;
}
mark[p.F][p.S] = 0;
}
int main(){
cin >> n >> k;
for (ll i = 1; i <= n; i ++)
for (ll j = 1; j <= n; j ++)
cin >> mat[i][j], total += mat[i][j];
vector<pair<ll, pair<pii, pii>>> vec;
for (ll i = 1; i <= n; i ++){
for (ll j = 1; j <= n; j ++){
if (j + 1 <= n)
vec.push_back({mat[i][j] + mat[i][j + 1], {{i, j}, {i, j + 1}}});
if (i + 1 <= n)
vec.push_back({mat[i][j] + mat[i + 1][j], {{i, j}, {i + 1, j}}});
}
}
sort(vec.begin(), vec.end());
ll mn = 4 * k;
set<pii> st;
while (vec.size() and st.size() < mn){
st.insert((vec.back()).S.F);
st.insert((vec.back()).S.S);
vec.pop_back();
}
for (auto p : st){
cells.push_back(p);
}
ans = total;
ll sz = cells.size();
for (ll mask = 0; mask < (1 << sz); mask ++){
ll c = __builtin_popcount(mask);
if (c != 2 * k) continue;
my_cells.clear();
long long sm = 0;
for (ll i = 0; i < sz; i ++){
if ((1 << i) & mask){
my_cells.push_back(cells[i]);
sm += mat[cells[i].F][cells[i].S];
}
}
for (auto p : my_cells)
exist[p.F][p.S] = 1;
done = 0;
dfs(0);
for (auto p : my_cells)
exist[p.F][p.S] = 0;
if (done)
ans = min(ans, total - sm);
}
cout << ans << endl;
}
Compilation message
domino.cpp: In function 'void dfs(ll)':
domino.cpp:22:11: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
22 | if (i >= my_cells.size()){
| ~~^~~~~~~~~~~~~~~~~~
domino.cpp: In function 'int main()':
domino.cpp:66:37: warning: comparison of integer expressions of different signedness: 'std::set<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
66 | while (vec.size() and st.size() < mn){
| ~~~~~~~~~~^~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
94 ms |
34472 KB |
Output is correct |
2 |
Correct |
83 ms |
32808 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
6808 KB |
Output is correct |
2 |
Incorrect |
2 ms |
6808 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1649 ms |
361748 KB |
Output is correct |
2 |
Incorrect |
1350 ms |
361672 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
4444 KB |
Output is correct |
2 |
Incorrect |
1 ms |
4444 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
999 ms |
355528 KB |
Output is correct |
2 |
Incorrect |
1240 ms |
354016 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
447 ms |
101112 KB |
Output is correct |
2 |
Incorrect |
427 ms |
100872 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1753 ms |
361696 KB |
Output is correct |
2 |
Incorrect |
1975 ms |
361844 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
529 ms |
6984 KB |
Output is correct |
2 |
Incorrect |
300 ms |
6808 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1969 ms |
361840 KB |
Output is correct |
2 |
Incorrect |
2109 ms |
370028 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
4033 ms |
7372 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
4444 KB |
Output is correct |
2 |
Correct |
1 ms |
2488 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
4061 ms |
368244 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
4 ms |
5268 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
422 ms |
98508 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
664 ms |
4444 KB |
Output is correct |
2 |
Correct |
694 ms |
2524 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1731 ms |
373372 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |