#include<stdio.h>
#include<vector>
#include<iostream>
using namespace std;
vector<pair<int,int>> vec;
int dp[1001][16][16];
int main(){
int solve=0;
while(!cin.eof()){
int a,b;
cin>>a>>b;
vec.push_back(make_pair(a,b));
}
dp[0][0][1]=vec[0].second;
dp[0][1][0]=vec[0].first;
for(int x=1;x<vec.size();x++){
int white=vec[x].first;
int black=vec[x].second;
for(int w=0;w<16;w++){
for(int b=0;b<16;b++){
if(w<15){
if(dp[x][w+1][b]<dp[x-1][w][b]+white){
dp[x][w+1][b]=dp[x-1][w][b]+white;
}
}
if(b<15){
if(dp[x][w][b+1]<dp[x-1][w][b]+black){
dp[x][w][b+1]=dp[x-1][w][b]+black;
}
}
if(dp[x][w][b]<dp[x-1][w][b]) dp[x][w][b]=dp[x-1][w][b];
}
}
if(solve<dp[x][15][15]){
solve=dp[x][15][15];
}
}
cout<<solve;
}
3시간째 끙끙대는중인데
점화식에서 틀린건가 코너케이스를 못잡는건가 도저히 모르겠음
백준 게시판에 올려도 대답없길래 여기다가 올려봄
그냥 틀린 풀이 같음. 점화식이 맞는지는 모르겠고 이 논리대로면 한 놈이 흑백 둘다에 쓰이지 않음?
한놈이 흑백 둘중 하나만 쓰이는거아님? 각각 w+1 b+1로 갈라지는거니까
아 그렇네 모바일이라 넘 대충 읽었나봐 ㅜㅜ 내가 짜보고 답변해야겠다
해당 댓글은 삭제되었습니다.
엥 똑같은코드 넣어도 출력 다르게 나오는데? 난 60나옴