QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#198102 | #3514. Bouldering | beshoyhany | AC ✓ | 2122ms | 39492kb | C++20 | 4.2kb | 2023-10-03 02:38:46 | 2023-10-03 02:38:46 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define pp push_back
#define endl '\n'
#define all(x) x.begin(),x.end()
#define ld long double
#define PI acos(-1)
#define sin(a) sin((a)*PI/180)
#define cos(a) cos((a)*PI/180)
#define ones(x) __builtin_popcountll(x)
//#define int ll
using namespace std;
void Drakon() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
#ifdef Clion
freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
#endif
}
unsigned long long inf = 1e10;
const double EPS = 1e-6;
const int MOD = 1000000007, N = 30, LOG = 25;
ll gcd(ll x, ll y) {
return y ? gcd(y, x % y) : x;
}
ll lcm(ll a, ll b) {
return (a * b) / __gcd(a, b);
}
ll mul(const ll &a, const ll &b) {
return (a % MOD + MOD) * (b % MOD + MOD) % MOD;
}
ll add(const ll &a, const ll &b) {
return (a + b + 2 * MOD) % MOD;
}
ll pw(ll x, ll y) {
ll ret = 1;
while (y > 0) {
if (y % 2 == 0) {
x = mul(x, x);
y = y / 2;
} else {
ret = mul(ret, x);
y = y - 1;
}
}
return ret;
}
int h, w, r, s;
char arr[N][N];
pair<int, int>top, bot;
vector<pair<pair<int, int>, double>>adj[N][N];
void dijkstra(){
double dist[h][w][h * w * 10];
bool vis[h][w][h * w * 10];
for (int i = 0; i < h; ++i) {
for (int j = 0; j < w; ++j) {
for (int k = 0; k < h * w * 10; ++k) {
dist[i][j][k] = 1e9;
vis[i][j][k] = false;
}
}
}
dist[bot.first][bot.second][min(s, h * w * 10 - 1)] = 0;
priority_queue<pair<pair<double, int>, pair<int, int>>, vector<pair<pair<double, int>, pair<int, int>>>, greater<>>q;
q.push({{0, min(s - (arr[bot.first][bot.second] - '0'), h * w * 10 - 1)}, bot});
while (!q.empty()){
auto p = q.top();
q.pop();
int x = p.second.first, y = p.second.second, sta = p.first.second;
double d = p.first.first;
if(vis[x][y][sta])continue;
vis[x][y][sta] = true;
for(auto v : adj[x][y]){
if(sta >= arr[v.first.first][v.first.second] - '0'){
if(dist[v.first.first][v.first.second][sta - (arr[v.first.first][v.first.second] - '0')] - (d + v.second) > EPS){
dist[v.first.first][v.first.second][sta - (arr[v.first.first][v.first.second] - '0')] = d + v.second;
q.push({{d + v.second, sta - (arr[v.first.first][v.first.second] - '0')}, v.first});
}
}
}
}
double ans = 1e9;
for (int i = 0; i <= min(s, h * w * 10 - 1); ++i) {
ans = min(ans, dist[top.first][top.second][i]);
}
if(ans > 1e8){
cout << "impossible";
return;
}
cout << fixed << setprecision(10) << ans;
}
void solve() {
cin >> h >> w >> r >> s;
for (int i = 0; i < h; ++i) {
for (int j = 0; j < w; ++j) {
cin >> arr[i][j];
}
}
bool found = false;
for (int i = 0; i < h; ++i) {
for (int j = 0; j < w; ++j) {
if(arr[i][j] != '.'){
top = {i, j};
found = true;
break;
}
}
if(found)break;
}
found = false;
for (int i = h - 1; i >= 0; --i) {
for (int j = 0; j < w; ++j) {
if(arr[i][j] != '.'){
bot = {i, j};
found = true;
break;
}
}
if(found)break;
}
for (int i = 0; i < h; ++i) {
for (int j = 0; j < w; ++j) {
if(arr[i][j] == '.')continue;
for (int k = 0; k < h; ++k) {
for (int l = 0; l < w; ++l) {
if(k == i && l == j)continue;
if(arr[k][l] == '.')continue;;
int d = (i - k) * (i - k) + (j - l) * (j - l);
if(d <= r * r){
adj[i][j].pp({{k, l}, sqrt(d)});
}
}
}
}
}
dijkstra();
}
signed main() {
Drakon();
int t = 1;
//cin >> t;
while (t--) {
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5356kb
input:
12 11 3 11 ........... ........3.. .......3.1. ........... .......2... .....2..... .1.1....... .....2..... .1......... ...2....... .1......... ...........
output:
13.5432037669
result:
ok
Test #2:
score: 0
Accepted
time: 0ms
memory: 5148kb
input:
8 16 3 15 ......1......... ....1..1.1...... ..2........1.... ...2......1..... .....4.1..2..1.. ................ .......1........ ................
output:
6.4142135624
result:
ok
Test #3:
score: 0
Accepted
time: 1ms
memory: 4340kb
input:
10 10 2 10 ...2...... .......... ...5.2.... .......... .....3.... ....5..... ..2....2.. ..1....... ....2..... ..1.......
output:
impossible
result:
ok
Test #4:
score: 0
Accepted
time: 1ms
memory: 3824kb
input:
5 5 1 100 ....1 .1111 .1.9. .119. ..1..
output:
6.0000000000
result:
ok
Test #5:
score: 0
Accepted
time: 0ms
memory: 3860kb
input:
6 7 3 10 ..6.... ..1.... ....... .5..1.. ....... ..1....
output:
6.6568542495
result:
ok
Test #6:
score: 0
Accepted
time: 0ms
memory: 3604kb
input:
2 18 2 5 .............1.... ...............9..
output:
impossible
result:
ok
Test #7:
score: 0
Accepted
time: 266ms
memory: 38132kb
input:
25 25 1 1000000 9........................ 21.21921.21921.21921.2193 92.92.92.92.92.92.92.92.3 .2..2..2..2..2..2..2..2.3 12.12.12.12.12.12.12.12.3 29.29.29.29.29.29.29.29.3 2..2..2..2..2..2..2..2..3 21.21.21.21.21.21.21.21.3 92.92.92.92.92.92.92.92.3 .2..2..2..2..2..2..2..2.3 12.12.12.12.12.12.12.12....
output:
272.0000000000
result:
ok
Test #8:
score: 0
Accepted
time: 1ms
memory: 3612kb
input:
2 18 2 5 .............9.... ...............1..
output:
impossible
result:
ok
Test #9:
score: 0
Accepted
time: 1ms
memory: 3828kb
input:
3 3 2 7 ..3 ... ..4
output:
2.0000000000
result:
ok
Test #10:
score: 0
Accepted
time: 587ms
memory: 38164kb
input:
25 25 1 1000000000 ........................1 2547174745232875997886554 7965651126962942737771266 6728739299224693912515356 3892629154668465958161356 7224952531945412299918567 6652628797132321234345444 2166938247278479435464195 4614671371217599224792557 1652832422769863877435862 528832887161666938898...
output:
48.0000000000
result:
ok
Test #11:
score: 0
Accepted
time: 2103ms
memory: 39492kb
input:
25 25 3 1000000000 ........................1 9726394797162243248412114 2389413121411497892345775 3536731263389491377529168 8539547197629558379487557 3476316664681454144237253 7167793883245166544976269 6551392597242556216495516 2913226341422851312188434 4794887856899463978185497 183788127159254461697...
output:
33.9411254970
result:
ok
Test #12:
score: 0
Accepted
time: 2122ms
memory: 39428kb
input:
25 25 3 100000 ........................1 9726394797162243248412114 2389413121411497892345775 3536731263389491377529168 8539547197629558379487557 3476316664681454144237253 7167793883245166544976269 6551392597242556216495516 2913226341422851312188434 4794887856899463978185497 1837881271592544616972778...
output:
33.9411254970
result:
ok
Test #13:
score: 0
Accepted
time: 2072ms
memory: 39488kb
input:
25 25 3 1000000000 ........................1 2547174745232875997886554 7965651126962942737771266 6728739299224693912515356 3892629154668465958161356 7224952531945412299918567 6652628797132321234345444 2166938247278479435464195 4614671371217599224792557 1652832422769863877435862 528832887161666938898...
output:
33.9411254970
result:
ok
Test #14:
score: 0
Accepted
time: 207ms
memory: 38052kb
input:
25 25 1 1000000000 ........................1 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 111111111111111111111...
output:
48.0000000000
result:
ok
Test #15:
score: 0
Accepted
time: 1687ms
memory: 38408kb
input:
25 25 3 1000000000 ........................1 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 111111111111111111111...
output:
33.9411254970
result:
ok
Test #16:
score: 0
Accepted
time: 3ms
memory: 4576kb
input:
10 10 1 1000000000 .........1 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1.........
output:
18.0000000000
result:
ok
Test #17:
score: 0
Accepted
time: 3ms
memory: 15160kb
input:
18 20 3 549 ...................9 .9.9.9.9.9.9.9.9.9.. .................... 9................... 9.9.9.9.9.9.9.9.9.9. .................... ...................9 .9.9.9.9.9.9.9.9.9.9 .................... 9................... 9.9.9.9.9.9.9.9.9.9. .................... ...................9 .9.9.9.9.9.9.9....
output:
122.0109613149
result:
ok
Test #18:
score: 0
Accepted
time: 22ms
memory: 15316kb
input:
18 20 3 227 ...................9 .9.9.9.9.9.9.9.9.9.. .................... 9................... 9.9.9.9.9.9.9.9.9.9. .................... ...................9 .1.1...............9 99999999999999991991 19991999999991999999 99999999999999999999 19991999999999199999 99999999999999999999 199999199999999...
output:
83.3672524846
result:
ok
Test #19:
score: 0
Accepted
time: 199ms
memory: 38456kb
input:
25 25 3 1000000000 .......................9. 9999999999999999999999999 9999999999999999999999999 9999999999999999999999999 9999999999999999999999999 9999999999999999999999999 9999999999999999999999999 9999999999999999999999999 9999999999999999999999999 9999999999999999999999999 999999999999999999999...
output:
33.3487663497
result:
ok
Test #20:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
2 1 1 2 1 1
output:
1.0000000000
result:
ok
Test #21:
score: 0
Accepted
time: 11ms
memory: 37920kb
input:
25 25 2 242 3........................ ..71............8.......3 8..7..9....96..4.8...6... ........2...87.1......... ...26.........65396...182 ..16....2.4..5....8971... .....7.8..6...6.7..1..5.. ...........914...4...4... ....51..4.....22......6.. 6..........8..53.41...4.. .5.4........4...1......82 .....
output:
impossible
result:
ok
Test #22:
score: 0
Accepted
time: 11ms
memory: 37856kb
input:
25 25 2 273 ......9.................. .9..8........2.5.59...962 ........5..7....4....7..8 .87....7...2..........4.. ....2....5...........87.. 81...29..697.......9.483. 448.....1.....46....31... .3..4.......3....6....... ..4.....7..............6. ...4....4....1..3........ ...3..4.13..4..2.2.95..4. 3....
output:
impossible
result:
ok
Test #23:
score: 0
Accepted
time: 13ms
memory: 38308kb
input:
25 25 3 194 .7....................... .9.......7...9........... 99.....5.....2..84..3.... .8....9...76..6..6.9..6.. ...3..4....6....22.1..... .2....95...3..4.2.41..... ...7.3..5.46..9..7..25... 2....21....2..83..1....31 94......9.4.............. 8........2.1.8.........9. ...68.3.5.9..5........... 9....
output:
35.1574753456
result:
ok
Test #24:
score: 0
Accepted
time: 4ms
memory: 37924kb
input:
25 25 3 437 5........................ 6.6.....6...6..84......5. 2....6.7.7....1..3...7.5. 1...4...7....1.8...667339 6.21648.6.......8.22...9. .3....3............1..... ...2195...71............. 8....8..31..6.31.5..4...6 .6.1....2......7.......7. .........5..1.2.9.9...... ........3.8..9..64......3 .8...
output:
impossible
result:
ok
Test #25:
score: 0
Accepted
time: 11ms
memory: 37904kb
input:
25 25 2 422 .4....................... .....6....2..8....55..... 7.........7........63.1.. .9......8...2..4276...... .........61........7..944 ...9..2..7.......1.41...5 ...8..2......8...2...9.5. ......6.2.8....27...5.... .3.9......4....9..54....5 .8..6..26........8.2...1. ......8........3.4..4...7 .....
output:
impossible
result:
ok
Test #26:
score: 0
Accepted
time: 398ms
memory: 38204kb
input:
25 25 3 922193402 7........................ ....86...7.9...7.29..5... ....1......1...8.52...5.. 7..2....9.3.37........... .....35.1.86...9555.4..1. ...6.23...7....5.....5..9 8.7....95..65.1.7.....38. ........235............21 5559.2.72.........2...751 ...44.527.4.8....8.95.... ...7........8...5........
output:
37.1509026360
result:
ok
Test #27:
score: 0
Accepted
time: 405ms
memory: 38092kb
input:
25 25 3 789168379 ......5.................. ....6.2.......8.3.28.4.2. 5.....6.88....9...72.2... ..4..8.........1..4...5.4 8773994.3.6.1...1..75...7 2629...79.9.1411......... .....791.......5..917.6.4 ..17.72..9....5.95....9.. ...5........7.3.25.4....9 .69..1.....3.....46573... 7......465.69.3..38..8...
output:
31.1509026360
result:
ok
Test #28:
score: 0
Accepted
time: 0ms
memory: 37832kb
input:
25 25 3 242 ............6............ ................8.......3 ...7.......9.....8....... ........2................ ..............6..96.....2 ..1.....2..........9..... .....7....6........1..5.. ...........9.4...4....... ....5.................... ..............53......... ................1......8. .....
output:
impossible
result:
ok
Test #29:
score: 0
Accepted
time: 4ms
memory: 37756kb
input:
25 25 3 434 ..2...................... ........................5 ............3.....3...... .......8.............9... 3..........9............. .....4..........61....... ..3...................... .....4..............6..1. .18...................... 6........................ ...........43...........5 1....
output:
impossible
result:
ok
Test #30:
score: 0
Accepted
time: 638ms
memory: 28400kb
input:
22 24 3 5550 ........1............... .6.756811649178....7663. .88..7..55....5..8.1748. .9.1..9.7243.868.6.....4 3765..93.24..2..1971.9.. 7154..959.4...9.2..33.9. 7.673.578.712...59578.97 662....33..867.466.37.99 ..5.3.616..1252.7.9317.. .51.9.6..994471.5.932..9 4.3178.2..48.16.43831.8. ....7999.88....
output:
21.2360679775
result:
ok
Test #31:
score: 0
Accepted
time: 102ms
memory: 38120kb
input:
25 25 1 1000000000 ........................1 111.111.111.111.111.111.1 1.1.1.1.1.1.1.1.1.1.1.1.1 1.1.1.1.1.1.1.1.1.1.1.1.1 1.1.1.1.1.1.1.1.1.1.1.1.1 1.1.1.1.1.1.1.1.1.1.1.1.1 1.1.1.1.1.1.1.1.1.1.1.1.1 1.1.1.1.1.1.1.1.1.1.1.1.1 1.1.1.1.1.1.1.1.1.1.1.1.1 1.1.1.1.1.1.1.1.1.1.1.1.1 1.1.1.1.1.1.1.1.1.1.1...
output:
312.0000000000
result:
ok
Test #32:
score: 0
Accepted
time: 0ms
memory: 4584kb
input:
10 10 1 100 .......... .....1.... ....11.... ....11.... ....11.... ....11.... ....11.... ....11.... ....1..... ..........
output:
8.0000000000
result:
ok
Test #33:
score: 0
Accepted
time: 1ms
memory: 4536kb
input:
10 10 1 100 .......... .....1.... .....1.... .....1.... .....1.... .....1.... .....1.... .....1.... .....1.... ..........
output:
7.0000000000
result:
ok
Test #34:
score: 0
Accepted
time: 1ms
memory: 3640kb
input:
2 1 1 18 9 9
output:
1.0000000000
result:
ok
Test #35:
score: 0
Accepted
time: 0ms
memory: 3656kb
input:
2 1 3 18 9 9
output:
1.0000000000
result:
ok
Test #36:
score: 0
Accepted
time: 304ms
memory: 38160kb
input:
25 25 3 470510254 ......................... ......................... ......................... ......................... ......................... ......1.................. .......3.............1... ..............9.......... ........6....1...9...9... .........8.415........... ........6.....1....8.....
output:
26.1443299264
result:
ok
Test #37:
score: 0
Accepted
time: 11ms
memory: 38208kb
input:
25 25 1 321 ..1...................... ..1..111...111...111..... .11.1191..1191..1191..111 11.11..1911.11.11..191191 1.11...111.11.11...111.11 1.19111...11.11.111...11. 1.11191..11.11.1191..11.. 11...11.11..1911.11.11... 91..11.11...111.11.11.111 11.11.11.111...11..191191 19.19.191191..11...111.11 11...
output:
320.0000000000
result:
ok
Test #38:
score: 0
Accepted
time: 11ms
memory: 38048kb
input:
25 25 1 321 ..1...................... ..1..111...111...111..... .11.1161..1161..1161..111 11.11..1611.11.11..161161 1.11...111.11.11...111.11 1.16111...11.11.111...11. 1.11161..11.11.1161..11.. 11...11.11..1611.11.11... 61..11.11...111.11.11.111 11.11.11.111...11..161161 16.16.161161..11...111.11 11...
output:
320.0000000000
result:
ok
Test #39:
score: 0
Accepted
time: 156ms
memory: 38036kb
input:
25 25 1 1000000000 ..1...................... ..1..111...111...111..... .11.1191..1191..1191..111 11.11..1911.11.11..191191 1.11...111.11.11...111.11 1.19111...11.11.111...11. 1.11191..11.11.1191..11.. 11...11.11..1911.11.11... 91..11.11...111.11.11.111 11.11.11.111...11..191191 19.19.191191..11...11...
output:
212.0000000000
result:
ok
Test #40:
score: 0
Accepted
time: 12ms
memory: 37908kb
input:
25 25 1 320 ..1...................... ..1..111...111...111..... .11.1191..1191..1191..111 11.11..1911.11.11..191191 1.11...111.11.11...111.11 1.19111...11.11.111...11. 1.11191..11.11.1191..11.. 11...11.11..1911.11.11... 91..11.11...111.11.11.111 11.11.11.111...11..191191 19.19.191191..11...111.11 11...
output:
impossible
result:
ok
Test #41:
score: 0
Accepted
time: 1ms
memory: 4408kb
input:
10 10 1 100 .......... .....1.... .....1.... .....1.... .....1.... .......... .....1.... .....1.... .....1.... ..........
output:
impossible
result:
ok
Test #42:
score: 0
Accepted
time: 1ms
memory: 4432kb
input:
10 10 1 100 .......... .....1.... .......... .......... .......... .......... .......... .......... .....1.... ..........
output:
impossible
result:
ok
Test #43:
score: 0
Accepted
time: 11ms
memory: 37948kb
input:
25 25 1 1000000000 ...9..................... ..99.999...999...999..999 .99.99.9..99.9..99.9..9.9 99.99.99.99.99.99.99.99.9 9.99.99.99.99.99.99.99.99 999.99.99.99.99.99.99.99. ...99.99.99.99.99.99.99.. ..99.99.99.99.99.99.99... .99.99.99.99.99.99.99.999 99.99.99.99.99.99.99.99.9 9.99.99.99.99.99.99.9...
output:
361.0000000000
result:
ok
Test #44:
score: 0
Accepted
time: 16ms
memory: 38028kb
input:
25 25 1 360 ...1..................... ..11.111...111...111..... .11.1191..1191..1191..111 11.11.11.11.11.11.11.1191 1911.11.11.11.11.11.11.11 111.11.11.11.11.11.11.11. ...11.11.11.11.11.11.11.. ..11.11.11.11.11.11.11... .11.11.11.11.11.11.11.111 11.11.11.11.11.11.11.1191 1911.11.11.11.11.11.11.11 11...
output:
359.0000000000
result:
ok
Test #45:
score: 0
Accepted
time: 207ms
memory: 38140kb
input:
25 25 1 1000000000 ...1..................... ..11.111...111...111..111 .11.1191..1191..1191..191 11.11.11.11.11.11.11.11.1 1911.11.11.11.11.11.11.11 111.11.11.11.11.11.11.11. ...11.11.11.11.11.11.11.. ..11.11.11.11.11.11.11... .11.11.11.11.11.11.11.111 11.11.11.11.11.11.11.1191 1911..1.11..1.11..1.1...
output:
177.0000000000
result:
ok