Task: | Mission |
Sender: | multiply and surrender |
Submission time: | 2015-10-07 17:45:20 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.05 s | details |
#2 | ACCEPTED | 0.06 s | details |
#3 | ACCEPTED | 0.06 s | details |
#4 | ACCEPTED | 0.05 s | details |
#5 | ACCEPTED | 0.05 s | details |
#6 | ACCEPTED | 0.05 s | details |
#7 | ACCEPTED | 0.05 s | details |
#8 | ACCEPTED | 0.07 s | details |
#9 | ACCEPTED | 0.05 s | details |
#10 | ACCEPTED | 0.06 s | details |
#11 | ACCEPTED | 0.05 s | details |
#12 | ACCEPTED | 0.07 s | details |
#13 | ACCEPTED | 0.04 s | details |
#14 | ACCEPTED | 0.05 s | details |
#15 | ACCEPTED | 0.05 s | details |
#16 | ACCEPTED | 0.06 s | details |
#17 | ACCEPTED | 0.05 s | details |
#18 | ACCEPTED | 0.06 s | details |
#19 | ACCEPTED | 0.06 s | details |
#20 | ACCEPTED | 0.06 s | details |
#21 | ACCEPTED | 0.05 s | details |
#22 | ACCEPTED | 0.05 s | details |
#23 | ACCEPTED | 0.05 s | details |
#24 | ACCEPTED | 0.05 s | details |
#25 | ACCEPTED | 0.06 s | details |
Compiler report
input/code.cpp: In function 'int main()': input/code.cpp:68:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int j=0;j<s.size();j++) { ^
Code
#include <iostream> #include <vector> #include <algorithm> #define F first #define S second using namespace std; int n,m,k; int coi[8],coj[8]; int a[102][102]; int v[102][102]; int cod[8][8]; int dist[102][102]; vector<pair<int,int>> z; int si,sj; int ti,tj; int sdist[8]; int tdist[8]; int per[8]; void clea() { for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { v[i][j]=0; } } z.clear(); } int visit(int ii,int jj) { // cout << ii << " " << jj << "\n"; if (v[ii][jj] || !a[ii][jj]) return 0; // cout << ii << " " << jj << "\n"; return 1; } void put(int ii, int jj, int hlp) { // cout << ii << " " << jj << "\n"; v[ii][jj] = 1; dist[ii][jj] = hlp+1; // cout << dist[ii][jj] << "\n"; // cout << "--" << endl; z.push_back(make_pair(ii, jj)); } void bfs(int i, int j) { // cout << "MOI\n"; v[i][j] = 1; dist[i][j] = 0; z.push_back(make_pair(i,j)); for (unsigned int lol= 0; lol < z.size(); lol++) { // cout << "MOI2\n"; if (visit(z[lol].F+1,z[lol].S)) put(z[lol].F+1,z[lol].S,dist[z[lol].F][z[lol].S]); if (visit(z[lol].F,z[lol].S-1)) put(z[lol].F,z[lol].S-1,dist[z[lol].F][z[lol].S]); if (visit(z[lol].F,z[lol].S+1)) put(z[lol].F,z[lol].S+1,dist[z[lol].F][z[lol].S]); if (visit(z[lol].F-1,z[lol].S)) put(z[lol].F-1,z[lol].S,dist[z[lol].F][z[lol].S]); } } int main() { cin >> n >> m >> k; int ind =0; for (int i=1;i<=n;i++) { string s; cin >> s; for (int j=0;j<s.size();j++) { if (s[j]!= '#') a[i][j+1]=1; if (s[j]== '*') { coi[ind]=i; coj[ind]=j+1; ind++; } if (s[j] == 'A') { si=i; sj=j+1; } if (s[j] == 'B') { ti=i; tj=j+1; } } } bfs(si,sj); if (k==0){ cout << dist[ti][tj] << "\n"; return 0; } for (int i=0;i<k;i++) sdist[i]=dist[coi[i]][coj[i]]; for (int i=0;i<k;i++) { clea(); bfs(coi[i],coj[i]); for (int j=0;j<k;j++) { cod[i][j]=dist[coi[j]][coj[j]]; } } clea(); bfs(ti,tj); for (int i=0;i<k;i++) tdist[i] = dist[coi[i]][coj[i]]; for (int i=0;i<k;i++) per[i] = i; int parsa = 1e9; // for (int i=0;i<k;i++) cout << sdist[i] << "\n"; do { int res=sdist[per[0]]; for (int i=1;i<k;i++) res += cod[per[i-1]][per[i]]; res += tdist[per[k-1]]; if (res < parsa) parsa = res; } while (next_permutation(per,per+k)); cout << parsa << "\n"; }
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 |