| Task: | Mission |
| Sender: | Pietari Kaskela |
| Submission time: | 2015-10-07 17:15:30 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.05 s | details |
| #2 | ACCEPTED | 0.05 s | details |
| #3 | ACCEPTED | 0.06 s | details |
| #4 | ACCEPTED | 0.05 s | details |
| #5 | ACCEPTED | 0.06 s | details |
| #6 | ACCEPTED | 0.07 s | details |
| #7 | ACCEPTED | 0.05 s | details |
| #8 | ACCEPTED | 0.05 s | details |
| #9 | ACCEPTED | 0.05 s | details |
| #10 | ACCEPTED | 0.05 s | details |
| #11 | ACCEPTED | 0.06 s | details |
| #12 | ACCEPTED | 0.05 s | details |
| #13 | ACCEPTED | 0.06 s | details |
| #14 | ACCEPTED | 0.06 s | details |
| #15 | ACCEPTED | 0.06 s | details |
| #16 | ACCEPTED | 0.05 s | details |
| #17 | ACCEPTED | 0.04 s | details |
| #18 | ACCEPTED | 0.05 s | details |
| #19 | ACCEPTED | 0.05 s | details |
| #20 | ACCEPTED | 0.06 s | details |
| #21 | ACCEPTED | 0.06 s | details |
| #22 | ACCEPTED | 0.06 s | details |
| #23 | ACCEPTED | 0.05 s | details |
| #24 | ACCEPTED | 0.06 s | details |
| #25 | ACCEPTED | 0.06 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:96:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 1; i < ccc.size(); i++){
^Code
#include <bits/stdc++.h>
#define i64 long long
#define u64 unsigned long long
#define i32 int
#define u32 unsigned int
#define pii pair<int, int>
#define pll pair<long long, long long>
#define defmod 1000000007
using namespace std;
int main(){
cin.sync_with_stdio(0);
cin.tie(0);
int n, m, k;
cin >> n >> m >> k;
string t[101];
vector<pii> coins;
pii sta, end;
unordered_map<int, unordered_map<int, int> > id;
vector<int> ccc;
for(int i = 0; i < n; i++){
cin >> t[i];
for(int j = 0; j < m; j++){
if(t[i][j] == '*'){
coins.push_back({i, j});
id[i][j] = coins.size();
ccc.push_back(id[i][j]);
}
if(t[i][j] == 'A'){
sta = {i, j};
}
if(t[i][j] == 'B'){
end = {i, j};
}
}
}
int ids, ide;
coins.push_back(sta);
id[sta.first][sta.second] = coins.size();
ids = coins.size();
coins.push_back(end);
id[end.first][end.second] = coins.size();
ide = coins.size();
i64 dist[101][101] = {0};
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(t[i][j] == '#' || t[i][j] == '.')
continue;
bool d[101][101] = {0};
queue<pair<pii, i64> > q;
q.push({{i, j}, 0});
while(!q.empty()){
int ci = q.front().first.first;
int cj = q.front().first.second;
i64 di = q.front().second;
q.pop();
if(ci >= n || ci < 0 || cj < 0 || cj >= m)
continue;
if(d[ci][cj])
continue;
if(t[ci][cj] == '#')
continue;
d[ci][cj] = true;
dist[id[i][j]][id[ci][cj]] = di;
q.push({{ci+1, cj}, di+1});
q.push({{ci-1, cj}, di+1});
q.push({{ci, cj+1}, di+1});
q.push({{ci, cj-1}, di+1});
}
}
}
coins.pop_back();
coins.pop_back();
if(k == 0){
cout << dist[ids][ide] << endl;
return 0;
}
if(k == 1){
cout << dist[ids][1] + dist[1][ide] << endl;
return 0;
}
i64 re = 999999999999LL;
do {
i64 cu = 0;
cu+=dist[ids][ccc[0]];
//cout << "jarjestys: " << endl;
//cout << ids << "->" << ccc[0] << " : " << dist[ids][ccc[0]] << endl;
for(int i = 1; i < ccc.size(); i++){
cu+=dist[ccc[i-1]][ccc[i]];
//cout << ccc[i-1] << "->" << ccc[i] << " : " << dist[ccc[i-1]][ccc[i-1]] << endl;
}
//cout << ccc[ccc.size()-1] << "->" << ide << " : " << dist[ccc[ccc.size()-1]][ide] << endl;
cu+=dist[ccc[ccc.size()-1]][ide];
re = min(re, cu);
} while ( std::next_permutation(ccc.begin(), ccc.end()) );
cout << re << endl;
return 0;
}Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 84 87 2 ##############################... |
| correct output |
|---|
| 104 |
| user output |
|---|
| 104 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 264 |
| user output |
|---|
| 264 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 26 51 1 ##############################... |
| correct output |
|---|
| 48 |
| user output |
|---|
| 48 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 145 |
| user output |
|---|
| 145 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 68 50 7 ##############################... |
| correct output |
|---|
| 88 |
| user output |
|---|
| 88 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 187 |
| user output |
|---|
| 187 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 61 79 6 ##############################... |
| correct output |
|---|
| 149 |
| user output |
|---|
| 149 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 232 |
| user output |
|---|
| 232 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 94 27 6 ########################### ########################### ########################### #############.############# ... |
| correct output |
|---|
| 82 |
| user output |
|---|
| 82 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 100 100 0 ##############################... |
| correct output |
|---|
| 30 |
| user output |
|---|
| 30 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 65 100 6 ######.#######################... |
| correct output |
|---|
| 233 |
| user output |
|---|
| 233 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 209 |
| user output |
|---|
| 209 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 75 18 3 ################## ################## ################## ################## ... |
| correct output |
|---|
| 72 |
| user output |
|---|
| 72 |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 196 |
| user output |
|---|
| 196 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 62 4 3 ###. #### #### #### ... |
| correct output |
|---|
| 44 |
| user output |
|---|
| 44 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 231 |
| user output |
|---|
| 231 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 15 4 0 ###. .### #### #.#. ... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 300 |
| user output |
|---|
| 300 |
Test 19
Verdict: ACCEPTED
| input |
|---|
| 86 15 2 .########....## #########...... #########...... #########...... ... |
| correct output |
|---|
| 88 |
| user output |
|---|
| 88 |
Test 20
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ##############################... |
| correct output |
|---|
| 288 |
| user output |
|---|
| 288 |
Test 21
Verdict: ACCEPTED
| input |
|---|
| 51 90 3 ................................. |
| correct output |
|---|
| 103 |
| user output |
|---|
| 103 |
Test 22
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ................................. |
| correct output |
|---|
| 352 |
| user output |
|---|
| 352 |
Test 23
Verdict: ACCEPTED
| input |
|---|
| 22 91 4 ................................. |
| correct output |
|---|
| 128 |
| user output |
|---|
| 128 |
Test 24
Verdict: ACCEPTED
| input |
|---|
| 100 100 8 ................................. |
| correct output |
|---|
| 317 |
| user output |
|---|
| 317 |
Test 25
Verdict: ACCEPTED
| input |
|---|
| 49 42 6 ................................. |
| correct output |
|---|
| 175 |
| user output |
|---|
| 175 |
