목록C++ (119)
레야몬
#include #include #include #include #define LOOP(i, N) for(int i=1; i> N; LOOP(i, N) { int x, id; cin >> x; if(x>num.back()) { num.push_back(x); //제일 큰 숫자 seq[num.size()-1].push_back(x); } else if((num[id = (lower_bound(num.begin(), num.end(), x) - num.begin()) ])!=x) { num[id]=x; seq[id].push_back(x); //갱신 된 결과를 벡터에 추가하기 } } cout
#include #include #define LOOP(i, N) for(int i=1; i> N >> M; LOOP(i, N) LOOP(j, M) cin >> map[i][j]; } void f(char map[MA][MA], int cnt, int r) { int flag; char fmap[5][MA][MA]; if(cnt==10) return; //10번 이하 memset(fmap, 0, 5*MA*MA); LOOP(i, 4) LOOP(j, N) LOOP(k, M) fmap[i][j][k] = map[j][k]; //왼쪽 if(r!=1) { flag=0; LOOP(i, N) { for(int j=1; jcnt) Min=cnt; if(!flag) f(fmap[1], cnt+1, 1); } //위쪽 i..
#include #include #define LOOP(i, N) for(int i=2; i> N; LOOP(i, N) { //아래에서 부터 차근차근 올라가기 dp[i]=dp[i-1]+1; bf[i]=i-1; if(!(i%2) && dp[i]>dp[i/2]+1) { dp[i] = dp[i/2]+1; bf[i]=i/2; } if(!(i%3) && dp[i]>dp[i/3]+1) { dp[i] = dp[i/3]+1; bf[i]=i/3; } } int i=N; cout
#include #include #include #define LOOP(i, N) for(int i=1; i> N; LOOP(i, N) { LOOP(j, N) { cin >> map[i][j]; if(map[i][j]>mv) mv=map[i][j]; } } } void f(int cnt, lld map[MAX_N][MAX_N]) { if(cnt==5) return; lld fmap[5][MAX_N][MAX_N]; memset(fmap, 0, sizeof(lld)*5*MAX_N*MAX_N); for(int i=1; imv) mv=x*2; v.push_back(x*2); x=0; } else { v.push_back(x); x=y; } } else x=y; } } if(x) v.push_back(x); LO..
#include #include #include #define LOOP(i, N) for(int i=1; i> N; LOOP(i, N) { int x; cin >> x; if(x>num.back()) num.push_back(x); else num[lower_bound(num.begin(), num.end(), x) - num.begin()]=x; } cout
#include #include #define LOOP(i, N) for(int i=1; i> N; LOOP(i, N) cin >> arr[i][0] >> arr[i][1]; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); input(); for(int i=1; i
#include #define LOOP(i, N) for(int i=1; i> N; LOOP(i, N) cin >> num[i]; cin >> M; } int f(int l, int r) { if(memo[l][r]) return memo[l][r]; //이미 탐색함 //탐색하지 않음 if(!(r-l)) return memo[l][r]= 2; if(r-l> S >> E; cout
#include #include #include #define LOOP(i, N) for(int i=1; i> n; LOOP(i, n) cin >> num[i]; } void dfs(int no) //node { if(fi[no]) return; if(vi[no]) { res += cnt - ord[no]; //사이클을 발생시킬 경우 탐색된 순서의 차이가 사이클을 구성하는 노드의 개수 return; } ord[no]=cnt++; //탐색된 순서 기록 vi[no]=1; dfs(num[no]); fi[no]=1; //탐색이 다끝나면 더 이상 보지 않음 } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> T..