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
AC × 3
AC × 16
AC × 42
AC × 68
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