이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define pb push_back
#define MEM(a, x) memset(a, x, sizeof a)
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pii;
template<typename T> void dbg(T &x) {cerr << x << endl;}
template<typename T> void dbga(T &x, int &n) {for(int i = 0; i < n; i++) {cerr << i << ": "; cerr << x[i] << endl;} }
template<typename T> void dbgv(T &x) {bool first = true; cerr << "{"; for(auto i : x) {if(!first) cerr << ","; cerr << i; first = false;} cerr << "}" << endl;}
int n;
string a;
map<pair<int, pii>, int> dp;
int nxt(int st, int idx) {
if(a[idx] == 'M') {
if(st == 0 || (st % 3 == 1)) return 1;
if(st % 3 == 2) return 4;
if(st % 3 == 0) return 7;
} else if(a[idx] == 'F') {
if(st == 0 || (st % 3 == 1)) return 2;
if(st % 3 == 2) return 5;
if(st % 3 == 0) return 8;
} else {
if(st == 0 || (st % 3 == 1)) return 3;
if(st % 3 == 2) return 6;
if(st % 3 == 0) return 9;
}
}
int val(int st, int idx) {
if(a[idx] == 'M') {
if(st == 0 || st == 1) return 1;
if(st == 6 || st == 8) return 3;
else return 2;
} else if(a[idx] == 'F') {
if(st == 0 || st == 5) return 1;
if(st == 3 || st == 7) return 3;
else return 2;
} else {
if(st == 0 || st == 9) return 1;
if(st == 2 || st == 4) return 3;
else return 2;
}
}
int solve(int idx, int st1, int st2) {
if(idx == n)
return 0;
pair<int, pii> key = {idx, {st1, st2}};
if(dp.find(key) != dp.end())
return dp[key];
return dp[key] = max(val(st1, idx) + solve(idx+1, nxt(st1, idx), st2),
val(st2, idx) + solve(idx+1, st1, nxt(st2, idx)));
}
int main() {
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n >> a;
int ans = solve(0,0,0);
cout << ans << endl;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
miners.cpp: In function 'int nxt(int, int)':
miners.cpp:33:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |