답안 #38320

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
38320 2018-01-03T16:49:21 Z b00n0rp Retro (COCI17_retro) C++14
0 / 100
133 ms 224564 KB
/*input
5 4
..).
.)(.
(.)*
*(.*
..M.
*/		
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define int ll
#define pb push_back
#define INF 1000000000
#define MOD 1000000007
#define mp make_pair
const double PI=3.141592653589793238462643383279502884197169399375105820974944;
#define REP(i,n) for (int i = 0; i < n; i++)
#define FOR(i,a,b) for (int i = a; i < b; i++)
#define REPD(i,n) for (int i = n-1; i >= 0; i--)
#define FORD(i,a,b) for (int i = a; i >= b; i--)
#define remax(a,b) a = max(a,b)
#define remin(a,b) a = min(a,b)
#define all(v) v.begin(),v.end()
#define pii pair<int,int>
#define F first
#define S second
#define mii map<int,int>
#define vi vector<int>
#define vvi vector<vi>
#define itr :: iterator it
#define WL(t) while(t --)
#define gcd(a,b) __gcd((a),(b))
#define lcm(a,b) ((a)*(b))/gcd((a),(b))
#define print(arr) for (auto it = arr.begin(); it != arr.end(); ++it) cout << *it << " "; cout << endl;
#define debug(x) cout << x << endl;
#define debug2(x,y) cout << x << " " << y << endl;
#define debug3(x,y,z) cout << x << " " << y << " " << z << endl;

int power(int a,int b,int m = MOD){
	if(b == 0) return 1;
	if(b == 1) return a;
	int x = power(a,b/2,m)%m;
	x = (x*x)%m;
	if(b%2) return (x*a)%m;
	return x;
}

int n,m;
int a[305][305],dp[305][305][305];
pii s;

void solve(){
	cin >> n >> m;
	REP(i,n){
		REP(j,m){
			char c; cin >> c;
			if(c == '.') a[i][j] = 0;
			else if(c == '(') a[i][j] = 1;
			else if(c == ')') a[i][j] = -1;
			else if(c == 'M') a[i][j] = 0,s = {i,j};
			else a[i][j] = 10;
		}
	}
	REP(i,305) REP(j,305) REP(k,305) dp[i][j][k] = -INF;
	REP(j,m){
		if(a[0][j]%10 == 0) dp[0][j][0] = 0;
		if(a[0][j] == -1) dp[0][j][1] = 1;
	}
	FOR(i,1,n){
		REP(j,m){
			if(a[i][j] == 10){
				dp[i][j][0] = 0;
				continue;
			}
			REP(k,n){
				if(a[i][j] == 0){
					dp[i][j][k] = max(dp[i-1][max((ll)0,j-1)][k],dp[i-1][j-1][k-1]);
					remax(dp[i][j][k],dp[i-1][min(j+1,m-1)][k]);
				}
				else{
					if(k == 0){
						if(a[i][j] == -1) continue;
					}
					dp[i][j][k] = max(dp[i-1][max((ll)0,j-1)][k+a[i][j]],dp[i-1][j-1][k+a[i][j]]);
					remax(dp[i][j][k],dp[i-1][min(j+1,m-1)][k+a[i][j]]);
					dp[i][j][k] ++;
				}
			}
		}
	}
	cout << dp[s.F][s.S][0];
}

signed main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int t = 1;
	// cin >> t;
	WL(t) solve();
}

# 결과 실행 시간 메모리 Grader output
1 Incorrect 33 ms 224564 KB Unexpected end of file - token expected
2 Incorrect 19 ms 224564 KB Unexpected end of file - token expected
3 Incorrect 39 ms 224564 KB Expected int32, but "3843995729930" found
4 Incorrect 39 ms 224564 KB Integer 0 violates the range [1, 100000]
5 Incorrect 53 ms 224564 KB Unexpected end of file - token expected
6 Incorrect 16 ms 224564 KB Expected int32, but "3843995729956" found
7 Incorrect 23 ms 224564 KB Unexpected end of file - token expected
8 Incorrect 26 ms 224564 KB Unexpected end of file - token expected
9 Incorrect 23 ms 224564 KB Expected int32, but "3843995729959" found
10 Incorrect 29 ms 224564 KB Expected int32, but "3843995729957" found
11 Incorrect 113 ms 224564 KB Expected int32, but "3843995730020" found
12 Incorrect 106 ms 224564 KB Expected int32, but "3843995729996" found
13 Incorrect 73 ms 224564 KB Expected int32, but "3843995730040" found
14 Incorrect 66 ms 224564 KB Expected int32, but "3843995730029" found
15 Incorrect 116 ms 224564 KB Expected int32, but "3843995730030" found
16 Incorrect 113 ms 224564 KB Unexpected end of file - token expected
17 Incorrect 99 ms 224564 KB Expected int32, but "3843995730038" found
18 Incorrect 99 ms 224564 KB Expected int32, but "3843995730013" found
19 Incorrect 133 ms 224564 KB Expected int32, but "3843995730046" found
20 Incorrect 133 ms 224564 KB Expected int32, but "8589935460" found