Submission #364844
Source Code Expand
#include<iostream>
#include<fstream>
#include<sstream>
#include<string>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<stack>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<list>
#include<algorithm>
#include<utility>
#include<complex>
using namespace std;
#define reE(i,a,b) for(auto (i)=(a);(i)<=(b);(i)++)
#define rE(i,b) reE(i,0,b)
#define reT(i,a,b) for(auto (i)=(a);(i)<(b);(i)++)
#define rT(i,b) reT(i,0,b)
#define rep(i,a,b) reE(i,a,b);
#define rev(i,a,b) for(auto (i)=(b)-1;(i)>=(a);(i)--)
#define itr(i,b) for(auto (i)=(b).begin();(i)!=(b).end();++(i))
#define rti(i,b) for(auto (i)=(b).rbegin();(i)!=(b).rend();++(i))
#define LL long long
#define all(b) (b).begin(),(b).end()
#define input_init stringstream ss; string strtoken, token; istringstream is
#define input_line getline(cin, strtoken);is.str(strtoken);is.clear(istringstream::goodbit)
#define input_token(num) ss.str(""); ss.clear(stringstream::goodbit); getline(is, token, ','); ss << token; ss >> num
#define dir(xx,yy,x,y,i) (xx)=(x)+dir[(i)],(yy)=(y)+dir[(i)+1]
typedef complex<double> P;
typedef vector<P> Poly;
const LL INF = 1 << 30;
const double eps = 1e-8;
const int dir[] = { 0, 1, 0, -1, 0 };
char area[20][20];
int H, W;
LL T;
int sx, sy;
struct M{
int x, y;
LL g;
M(int xx, int yy,int cost){
x = xx;
y = yy;
g = cost;
}
bool operator<(const M &another)const{
return(g > another.g);
}
};
bool min_cost(LL x){
priority_queue<M> q;
bool used[15][15];
rT(i, 15)rT(j, 15)used[i][j] = true;
M st(sx, sy, 0);
used[sx][sy] = false;
q.push(st);
while (q.empty() == false){
M v = q.top(); q.pop();
//printf("(%d,%d,%lld)\n", v.x, v.y, v.g);
if (v.g >= T)return false;
rT(i, 4){
int xx, yy;
dir(xx, yy, v.x, v.y, i);
if (xx >= 0 && xx < H&&yy >= 0 && yy < W&&used[xx][yy]==true){
if (area[xx][yy] == 'G'&&v.g < T)return true;
M u(xx, yy, v.g + (area[xx][yy] == '#' ? x : 1));
q.push(u);
used[xx][yy] = false;
}
}
}
return false;
}
int main(void){
cin >> H >> W >> T;
rT(i, H)rT(j, W){
cin >> area[i][j];
if (area[i][j] == 'S')sx = i, sy = j;
}
LL top = T;
LL middle = T / 2;
LL bottom = 0;
while (top-bottom>1){
//printf("%lld,%lld,%lld\n", top, middle, bottom);
if (min_cost(middle))bottom = middle;
else top = middle;
middle = (bottom + top) / 2;
}
cout << bottom << endl;
return(0);
}
Submission Info
Submission Time |
|
Task |
C - 壁抜け |
User |
btk15049 |
Language |
C++11 (GCC 4.9.2) |
Score |
100 |
Code Size |
2507 Byte |
Status |
AC |
Exec Time |
29 ms |
Memory |
928 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Subtask3 |
Score / Max Score |
0 / 0 |
40 / 40 |
30 / 30 |
30 / 30 |
Status |
|
|
|
|
Set Name |
Test Cases |
Sample |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt |
Subtask1 |
subtask0_sample_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt |
Subtask2 |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt, subtask2_30.txt, subtask2_31.txt, subtask2_32.txt, subtask2_33.txt, subtask2_34.txt, subtask2_35.txt, subtask2_36.txt, subtask2_37.txt, subtask2_38.txt, subtask2_39.txt, subtask2_40.txt |
Subtask3 |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt, subtask2_30.txt, subtask2_31.txt, subtask2_32.txt, subtask2_33.txt, subtask2_34.txt, subtask2_35.txt, subtask2_36.txt, subtask2_37.txt, subtask2_38.txt, subtask2_39.txt, subtask2_40.txt, subtask3_41.txt, subtask3_42.txt, subtask3_43.txt, subtask3_44.txt, subtask3_45.txt, subtask3_46.txt, subtask3_47.txt, subtask3_48.txt, subtask3_49.txt, subtask3_50.txt, subtask3_51.txt, subtask3_52.txt, subtask3_53.txt, subtask3_54.txt, subtask3_55.txt, subtask3_56.txt, subtask3_57.txt, subtask3_58.txt, subtask3_59.txt, subtask3_60.txt, subtask3_61.txt, subtask3_62.txt, subtask3_63.txt, subtask3_64.txt, subtask3_65.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_sample_01.txt |
AC |
24 ms |
928 KB |
subtask0_sample_02.txt |
AC |
22 ms |
924 KB |
subtask0_sample_03.txt |
AC |
24 ms |
804 KB |
subtask1_01.txt |
AC |
22 ms |
808 KB |
subtask1_02.txt |
AC |
22 ms |
796 KB |
subtask1_03.txt |
AC |
24 ms |
804 KB |
subtask1_04.txt |
AC |
22 ms |
928 KB |
subtask1_05.txt |
AC |
22 ms |
808 KB |
subtask1_06.txt |
AC |
24 ms |
800 KB |
subtask1_07.txt |
AC |
23 ms |
924 KB |
subtask1_08.txt |
AC |
24 ms |
704 KB |
subtask1_09.txt |
AC |
23 ms |
720 KB |
subtask1_10.txt |
AC |
22 ms |
804 KB |
subtask1_11.txt |
AC |
24 ms |
704 KB |
subtask1_12.txt |
AC |
22 ms |
800 KB |
subtask1_13.txt |
AC |
24 ms |
924 KB |
subtask1_14.txt |
AC |
22 ms |
920 KB |
subtask1_15.txt |
AC |
24 ms |
796 KB |
subtask2_16.txt |
AC |
24 ms |
800 KB |
subtask2_17.txt |
AC |
24 ms |
804 KB |
subtask2_18.txt |
AC |
24 ms |
804 KB |
subtask2_19.txt |
AC |
24 ms |
924 KB |
subtask2_20.txt |
AC |
25 ms |
732 KB |
subtask2_21.txt |
AC |
25 ms |
920 KB |
subtask2_22.txt |
AC |
25 ms |
796 KB |
subtask2_23.txt |
AC |
23 ms |
920 KB |
subtask2_24.txt |
AC |
25 ms |
920 KB |
subtask2_25.txt |
AC |
23 ms |
796 KB |
subtask2_26.txt |
AC |
26 ms |
728 KB |
subtask2_27.txt |
AC |
25 ms |
732 KB |
subtask2_28.txt |
AC |
26 ms |
800 KB |
subtask2_29.txt |
AC |
26 ms |
780 KB |
subtask2_30.txt |
AC |
25 ms |
916 KB |
subtask2_31.txt |
AC |
25 ms |
924 KB |
subtask2_32.txt |
AC |
25 ms |
912 KB |
subtask2_33.txt |
AC |
24 ms |
920 KB |
subtask2_34.txt |
AC |
25 ms |
732 KB |
subtask2_35.txt |
AC |
25 ms |
916 KB |
subtask2_36.txt |
AC |
24 ms |
924 KB |
subtask2_37.txt |
AC |
25 ms |
920 KB |
subtask2_38.txt |
AC |
24 ms |
920 KB |
subtask2_39.txt |
AC |
24 ms |
924 KB |
subtask2_40.txt |
AC |
25 ms |
920 KB |
subtask3_41.txt |
AC |
25 ms |
924 KB |
subtask3_42.txt |
AC |
26 ms |
732 KB |
subtask3_43.txt |
AC |
25 ms |
732 KB |
subtask3_44.txt |
AC |
24 ms |
924 KB |
subtask3_45.txt |
AC |
25 ms |
920 KB |
subtask3_46.txt |
AC |
25 ms |
792 KB |
subtask3_47.txt |
AC |
24 ms |
920 KB |
subtask3_48.txt |
AC |
24 ms |
916 KB |
subtask3_49.txt |
AC |
25 ms |
732 KB |
subtask3_50.txt |
AC |
25 ms |
920 KB |
subtask3_51.txt |
AC |
24 ms |
920 KB |
subtask3_52.txt |
AC |
25 ms |
920 KB |
subtask3_53.txt |
AC |
25 ms |
928 KB |
subtask3_54.txt |
AC |
26 ms |
924 KB |
subtask3_55.txt |
AC |
26 ms |
800 KB |
subtask3_56.txt |
AC |
23 ms |
928 KB |
subtask3_57.txt |
AC |
24 ms |
800 KB |
subtask3_58.txt |
AC |
25 ms |
800 KB |
subtask3_59.txt |
AC |
23 ms |
928 KB |
subtask3_60.txt |
AC |
26 ms |
916 KB |
subtask3_61.txt |
AC |
25 ms |
732 KB |
subtask3_62.txt |
AC |
26 ms |
800 KB |
subtask3_63.txt |
AC |
26 ms |
800 KB |
subtask3_64.txt |
AC |
29 ms |
748 KB |
subtask3_65.txt |
AC |
25 ms |
796 KB |