Submission #61181
Source Code Expand
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <string>
#include <vector>
using namespace std;
#define reps(i,f,n) for(int i=f; i<int(n); ++i)
#define rep(i,n) reps(i,0,n)
#define debug(x) cerr<<#x<<" = "<<(x)<<endl;
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;
const int INF = 1001001001;
struct Data
{
int y, x, dir, next, cost;
Data(int y, int x, int dir, int next, int cost) : y(y),x(x),dir(dir),next(next),cost(cost){}
bool operator< (const Data& d)const {
return cost > d.cost;
}
};
bool visited[101][101][110][4];
pii memo[100][100][26][4];
int main()
{
int h, w, l;
scanf("%d%d%d", &h, &w, &l);
char str[128];
scanf("%s", str);
char board[128][128];
rep(i, h)
scanf("%s", board[i]);
rep(i, 100) rep(j, 100) rep(k, 26) rep(l, 4)
memo[i][j][k][l].first = -1;
rep(i, h) rep(j, w){
rep(k, 4){
const int dy[] = {-1, 0, 0, 1};
const int dx[] = {0, 1, -1, 0};
int py = i, px = j;
for(;;){
py += dy[k];
px += dx[k];
if(py<0 || h<=py || px<0 || w<=px)
break;
int c = board[py][px] - 'a';
if(memo[i][j][c][k].first == -1){
memo[i][j][c][k] = pii(py, px);
}
}
}
}
priority_queue<Data> Q;
rep(i, h) rep(j, w){
Q.push(Data(i, j, -1, 0, 0));
}
int ans = INF;
while(!Q.empty()){
Data d = Q.top();
Q.pop();
if(visited[d.y][d.x][d.next][d.dir])
continue;
visited[d.y][d.x][d.next][d.dir] = true;
rep(i, 4){
if(d.dir == i) continue;
pii next = memo[d.y][d.x][str[d.next]-'a'][i];
if(next.first == -1)
continue;
int nextcost = d.cost + abs(d.y-next.first) + abs(d.x-next.second);
if(d.next+1 == l)
ans = min(ans, nextcost);
else
Q.push(Data(next.first, next.second, i, d.next+1, nextcost));
}
}
printf("%d\n", ans==INF ? -1 : ans);
return 0;
}
Submission Info
Submission Time
2012-12-08 16:13:05+0900
Task
F - 僕は宇宙人
User
natrium
Language
C++ (G++ 4.6.4)
Score
100
Code Size
2139 Byte
Status
AC
Exec Time
152 ms
Memory
14256 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:44:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
./Main.cpp:47:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
./Main.cpp:51:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
Judge Result
Set Name
All
Score / Max Score
100 / 100
Status
Set Name
Test Cases
All
case_000.txt, case_001.txt, case_002.txt, case_003.txt, case_004.txt, case_005.txt, case_006.txt, case_007.txt, case_008.txt, case_009.txt, case_010.txt, case_011.txt, case_012.txt, case_013.txt, case_014.txt, case_015.txt, case_016.txt, case_017.txt, case_018.txt, case_019.txt, case_020.txt, case_021.txt, case_022.txt, case_023.txt, case_024.txt, case_025.txt, case_026.txt, case_027.txt, case_028.txt, case_029.txt, case_030.txt, case_031.txt, case_032.txt, case_033.txt, case_034.txt, case_035.txt, case_036.txt, case_037.txt, case_038.txt, case_039.txt, case_040.txt, case_041.txt, case_042.txt, case_043.txt, case_044.txt, case_045.txt, case_046.txt, case_047.txt, case_048.txt, case_049.txt, case_050.txt, case_051.txt, case_052.txt, case_053.txt, case_054.txt
Case Name
Status
Exec Time
Memory
case_000.txt
AC
36 ms
8764 KB
case_001.txt
AC
36 ms
8760 KB
case_002.txt
AC
36 ms
8772 KB
case_003.txt
AC
36 ms
8888 KB
case_004.txt
AC
36 ms
8880 KB
case_005.txt
AC
36 ms
8888 KB
case_006.txt
AC
37 ms
8888 KB
case_007.txt
AC
36 ms
8772 KB
case_008.txt
AC
36 ms
8884 KB
case_009.txt
AC
37 ms
8884 KB
case_010.txt
AC
37 ms
8888 KB
case_011.txt
AC
37 ms
9016 KB
case_012.txt
AC
36 ms
8876 KB
case_013.txt
AC
146 ms
14256 KB
case_014.txt
AC
152 ms
14252 KB
case_015.txt
AC
79 ms
12400 KB
case_016.txt
AC
54 ms
11116 KB
case_017.txt
AC
59 ms
11500 KB
case_018.txt
AC
43 ms
9772 KB
case_019.txt
AC
59 ms
10864 KB
case_020.txt
AC
40 ms
9524 KB
case_021.txt
AC
41 ms
9652 KB
case_022.txt
AC
45 ms
10256 KB
case_023.txt
AC
45 ms
10132 KB
case_024.txt
AC
60 ms
11636 KB
case_025.txt
AC
37 ms
9020 KB
case_026.txt
AC
48 ms
10520 KB
case_027.txt
AC
39 ms
9392 KB
case_028.txt
AC
38 ms
9392 KB
case_029.txt
AC
45 ms
10264 KB
case_030.txt
AC
82 ms
13316 KB
case_031.txt
AC
58 ms
11120 KB
case_032.txt
AC
46 ms
10268 KB
case_033.txt
AC
45 ms
10264 KB
case_034.txt
AC
38 ms
8988 KB
case_035.txt
AC
68 ms
11888 KB
case_036.txt
AC
37 ms
9280 KB
case_037.txt
AC
48 ms
10388 KB
case_038.txt
AC
42 ms
9784 KB
case_039.txt
AC
72 ms
13232 KB
case_040.txt
AC
89 ms
12844 KB
case_041.txt
AC
55 ms
11028 KB
case_042.txt
AC
38 ms
9144 KB
case_043.txt
AC
42 ms
9784 KB
case_044.txt
AC
37 ms
9156 KB
case_045.txt
AC
40 ms
9528 KB
case_046.txt
AC
38 ms
9144 KB
case_047.txt
AC
72 ms
11508 KB
case_048.txt
AC
83 ms
11116 KB
case_049.txt
AC
38 ms
9136 KB
case_050.txt
AC
57 ms
11128 KB
case_051.txt
AC
39 ms
9372 KB
case_052.txt
AC
59 ms
11240 KB
case_053.txt
AC
40 ms
9400 KB
case_054.txt
AC
40 ms
9528 KB