diff --git a/BOJ_10189.cpp b/BOJ_10189.cpp new file mode 100644 index 0000000..ef8baf7 --- /dev/null +++ b/BOJ_10189.cpp @@ -0,0 +1,16 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + cout << "# # #### #### # #" << endl; + cout << "#### # # # # # #" << endl; + cout << "#### # # # # # #" << endl; + cout << "# # #### #### # #" << endl; +} diff --git a/BOJ_1080.cpp b/BOJ_1080.cpp new file mode 100644 index 0000000..d74de62 --- /dev/null +++ b/BOJ_1080.cpp @@ -0,0 +1,63 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +char A[55][55]; +char B[55][55]; +int n, m; + +void Checked(int a, int b) { + for (int i = a; i <= a + 2; i++) { + for (int j = b; j <= b + 2; j++) { + if (A[i][j] == '0') + A[i][j] = '1'; + else + A[i][j] = '0'; + } + } + // for (int i = 1; i <= n; i++) { + // for (int j = 1; j <= m; j++) { + // cout << A[i][j] << " "; + // } + // cout << '\n'; + // } + // cout << '\n'; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + + cin >> n >> m; + + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + cin >> A[i][j]; + } + } + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + cin >> B[i][j]; + } + } + int cnt = 0; + for (int i = 0; i < n - 2; i++) { + for (int j = 0; j < m - 2; j++) { + // cout << i << " " << j << '\n'; + if (A[i][j] != B[i][j]) { + // cout << i << " " << j << '\n'; + Checked(i, j); + cnt++; + } + } + } + for (int i = 0; i < n; i++) + for (int j = 0; j < m; j++) + if (A[i][j] != B[i][j]) + cnt = -1; + cout << cnt << '\n'; +} diff --git a/BOJ_1132.cpp b/BOJ_1132.cpp new file mode 100644 index 0000000..b66b8ce --- /dev/null +++ b/BOJ_1132.cpp @@ -0,0 +1,13 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + +} diff --git a/BOJ_11444.cpp b/BOJ_11444.cpp deleted file mode 100644 index 33e6454..0000000 --- a/BOJ_11444.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000007 -const ll INF = 10e12 + 10; -using namespace std; - -map mp; -ll fibo(ll x) { - if (mp[x])return mp[x]; - ll res; - if (x % 2) - res = ((fibo((x + 1) / 2) * fibo((x + 1) / 2)) % MOD) + ( - (fibo((x - 1) / 2) * fibo((x - 1) / 2)) % MOD) % MOD; - else res = (fibo(x / 2) * (fibo(x / 2 + 1) + fibo(x / 2 - 1))) % MOD; - - return mp[x] = res % MOD; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - ll n; - cin >> n; - mp[0] = 0, mp[1] = 1, mp[2] = 1; - cout << fibo(n); -} diff --git a/BOJ_1153.cpp b/BOJ_1153.cpp deleted file mode 100644 index 0e11bea..0000000 --- a/BOJ_1153.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -int Prime[1010101]; - -int IsPrime(int n) { - if (n == 2)return 1; - if (n <= 1 || n % 2 == 0)return 0; - for (int i = 3; i * i <= n; i += 2) { - if (n % i == 0)return 0; - } - return 1; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n; - cin >> n; - if (n < 8) { - cout << "-1" << '\n'; - return 0; - } - for (int i = 2; i * i <= n; i++) { - if (Prime[i])continue; - for (int j = i * i; j <= n; j += i) - Prime[j] = 1; - } - if (n % 2) { - n -= 5; - cout << "2 3 "; - } else { - n -= 4; - cout << "2 2 "; - } - for (int i = 2; i <= n; i++) { - if (!Prime[i] && !Prime[n - i]) { - cout << i << " " << n - i; - return 0; - } - } -} diff --git a/BOJ_11687.cpp b/BOJ_11687.cpp deleted file mode 100644 index 87d63f9..0000000 --- a/BOJ_11687.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - - -int bSearch(int m) { - int cnt = 0; - while (m) { - cnt += m / 5; - m /= 5; - } - return cnt; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int m; - cin >> m; - int l = 0, r = 5e9 + 1, ans; - while (l + 1 < r) { - int mid = (l + r) / 2; - - if (bSearch(mid) < m) { - l = mid; - } else { - r = mid; - } - } - - cout << (bSearch(r) == m ? r : -1) << '\n'; -} diff --git a/BOJ_11758.cpp b/BOJ_11758.cpp new file mode 100644 index 0000000..ff80e40 --- /dev/null +++ b/BOJ_11758.cpp @@ -0,0 +1,23 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int x1, x2, x3, y1, y2, y3; + cin >> x1 >> y1; + cin >> x2 >> y2; + cin >> x3 >> y3; + int ccw = (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1); + if (ccw > 0) + cout << 1; + else if (ccw < 0) + cout << -1; + else + cout << 0; +} diff --git a/BOJ_12849.cpp b/BOJ_12849.cpp new file mode 100644 index 0000000..7ac823d --- /dev/null +++ b/BOJ_12849.cpp @@ -0,0 +1,32 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000007 +const ll INF = 10e12 + 10; +using namespace std; + +ll bon[8]; // 정보관을 idx= 0으로 시작하여 반시계방향으로 idx++ +ll dp[8]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int d; + cin >> d; + dp[0] = 1; + for (int i = 0; i < d; i++) { + bon[0] = dp[1] + dp[7]; + bon[1] = dp[0] + dp[2] + dp[7]; + bon[2] = dp[1] + dp[3] + dp[6] + dp[7]; + bon[3] = dp[2] + dp[4] + dp[6]; + bon[4] = dp[3] + dp[5]; + bon[5] = dp[4] + dp[6]; + bon[6] = dp[2] + dp[3] + dp[5] + dp[7]; + bon[7] = dp[0] + dp[1] + dp[2] + dp[6]; + + for (int j = 0; j < 8; j++) + dp[j] = bon[j] % MOD; + } + cout << dp[0]; +} diff --git a/BOJ_12850.cpp b/BOJ_12850.cpp new file mode 100644 index 0000000..a71f5b8 --- /dev/null +++ b/BOJ_12850.cpp @@ -0,0 +1,60 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000007 +const ll INF = 10e12 + 10; +using namespace std; + +typedef vector > matrix; + +matrix operator *(const matrix &a, const matrix &b) { + int n = a.size(); + matrix c(n, vector(n, 0)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + c[i][j] += (a[i][k] * b[k][j]) % MOD; + c[i][j] %= MOD; + } + } + } + return c; +} + +matrix A = { + {0, 1, 0, 0, 0, 1, 0, 0}, + {1, 0, 1, 0, 0, 0, 1, 0}, + {0, 1, 0, 1, 0, 0, 1, 1}, + {0, 0, 1, 0, 1, 0, 0, 1}, + {0, 0, 0, 1, 0, 0, 0, 1}, + {1, 0, 0, 0, 0, 0, 1, 0}, + {0, 1, 1, 0, 0, 1, 0, 1}, + {0, 0, 1, 1, 1, 0, 1, 0} +}; + +matrix ans = { + {1, 0, 0, 0, 0, 0, 0, 0}, + {0, 1, 0, 0, 0, 0, 0, 0}, + {0, 0, 1, 0, 0, 0, 0, 0}, + {0, 0, 0, 1, 0, 0, 0, 0}, + {0, 0, 0, 0, 1, 0, 0, 0}, + {0, 0, 0, 0, 0, 1, 0, 0}, + {0, 0, 0, 0, 0, 0, 1, 0}, + {0, 0, 0, 0, 0, 0, 0, 1} +}; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int d; + cin >> d; + while (d > 0) { + if (d % 2) { + ans = ans * A; + } + A = A * A; + d /= 2; + } + cout << ans[4][4] << '\n'; +} diff --git a/BOJ_1377.cpp b/BOJ_1377.cpp new file mode 100644 index 0000000..4392a94 --- /dev/null +++ b/BOJ_1377.cpp @@ -0,0 +1,28 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +pii A[505050]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + for (int i = 0; i < n; i++) { + cin >> A[i].first; + A[i].second = i; + } + stable_sort(A, A + n); + int ans = 0; + for (int i = 0; i < n; i++) { + cout << A[i].second << " "; + // cout << A[i].second - i << " "; + ans = max(ans, abs(A[i].second - i)); + } + // cout << ans + 1; +} diff --git a/BOJ_14289.cpp b/BOJ_14289.cpp new file mode 100644 index 0000000..915bf4d --- /dev/null +++ b/BOJ_14289.cpp @@ -0,0 +1,52 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000007 +const ll INF = 10e12 + 10; +using namespace std; +typedef vector > matrix; + +matrix operator *(const matrix &a, const matrix &b) { + int n = a.size(); + matrix c(n, vector(n, 0)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + c[i][j] += (a[i][k] * b[k][j]) % MOD; + c[i][j] %= MOD; + } + } + } + return c; +} + +matrix pow(matrix a, int n) { + matrix ret(a.size(), vector(a.size())); + for (int i = 0; i < a.size(); i++) ret[i][i] = 1; + while (n > 0) { + if (n & 1) ret = ret * a; + n /= 2; + a = a * a; + } + return ret; +} + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n, m; + cin >> n >> m; + matrix A(n, vector(n)); + for (int i = 0; i < m; i++) { + int a, b; + cin >> a >> b; + a--, b--; + A[a][b] = A[b][a] = 1; + } + int d; + cin >> d; + A = pow(A, d); + cout << A[0][0] << '\n'; +} diff --git a/BOJ_14428.cpp b/BOJ_14428.cpp new file mode 100644 index 0000000..d58b42f --- /dev/null +++ b/BOJ_14428.cpp @@ -0,0 +1,62 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +constexpr int SZ = 1 << 17; +using namespace std; + +int N, Q, A[SZ], T[SZ << 1]; + +int minIndex(int a, int b) { + if (a == 1e9)return b; + if (b == 1e9)return a; + return A[a] <= A[b] ? a : b; +} + +int Init(int node = 1, int s = 1, int e = N) { + if (s == e) { + return T[node] = s; + } + int m = (s + e) / 2; + // Init(node * 2, s, m); + // Init(node * 2 + 1, m + 1, e); + return T[node] = minIndex(Init(node * 2, s, m), Init(node * 2 + 1, m + 1, e)); +} + +int Update(int x, int v, int node = 1, int s = 1, int e = N) { + if (s > x || e < x) return T[node]; + if (s == e) { + return T[node]; + } + int m = (s + e) / 2; + return T[node] = minIndex(Update(x, v, node * 2, s, m), Update(x, v, node * 2 + 1, m + 1, e)); +} + +int Query(int l, int r, int node = 1, int s = 1, int e = N) { + if (r < s || e < l)return 1e9; + if (l <= s && e <= r) return T[node]; + int m = (s + e) / 2; + return minIndex(Query(l, r, node * 2, s, m), Query(l, r, node * 2 + 1, m + 1, e)); +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + cin >> N; + for (int i = 1; i <= N; i++) + cin >> A[i]; + Init(); + cin >> Q; + while (Q--) { + int num, a, b; + cin >> num >> a >> b; + if (num == 1) { + A[a] = b; + Update(a, b); + } else if (num == 2) { + cout << Query(a, b) << '\n'; + } + } +} diff --git a/BOJ_14438.cpp b/BOJ_14438.cpp new file mode 100644 index 0000000..b634feb --- /dev/null +++ b/BOJ_14438.cpp @@ -0,0 +1,61 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +constexpr int SZ = 1 << 17; +using namespace std; + +int N, Q, A[SZ], T[SZ << 1]; + + +void Init(int node = 1, int s = 1, int e = N) { + if (s == e) { + T[node] = A[s]; + return; + } + int m = (s + e) / 2; + Init(node * 2, s, m); + Init(node * 2 + 1, m + 1, e); + T[node] = min(T[node * 2], T[node * 2 + 1]); +} + +void Update(int x, int v, int node = 1, int s = 1, int e = N) { + if (s == e) { + T[node] = v; + return; + } + int m = (s + e) / 2; + if (x <= m)Update(x, v, node * 2, s, m); + else Update(x, v, node * 2 + 1, m + 1, e); + T[node] = min(T[node * 2], T[node * 2 + 1]); +} + + +int Query(int l, int r, int node = 1, int s = 1, int e = N) { + if (r < s || e < l)return 1e9; + if (l <= s && e <= r) return T[node]; + int m = (s + e) / 2; + return min(Query(l, r, node * 2, s, m), Query(l, r, node * 2 + 1, m + 1, e)); +} + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + cin >> N; + for (int i = 1; i <= N; i++) + cin >> A[i]; + Init(); + cin >> Q; + while (Q--) { + int num, a, b; + cin >> num >> a >> b; + if (num == 1) { + Update(a, b); + } else if (num == 2) { + cout << Query(a, b) << '\n'; + } + } +} diff --git a/BOJ_14713.cpp b/BOJ_14713.cpp new file mode 100644 index 0000000..c5a6f23 --- /dev/null +++ b/BOJ_14713.cpp @@ -0,0 +1,54 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + string tmp; + getline(cin, tmp); + vector > q(n + 1); + for (int i = 0; i <= n; i++) { + string str; + getline(cin, str); + istringstream is(str); + + string s; + while (getline(is, s, ' ')) { + q[i].push(s); + } + } + bool flag = false; + int sz = q[n].size(); + + for (int i = 0; i < sz; i++) { + string wd = q[n].front(); + for (int j = 0; j < n; j++) { + if ((!q[j].empty()) && (q[j].front() == wd)) { + q[j].pop(), q[n].pop(); + + flag = true; + break; + } + } + if (!flag) { + cout << "Impossible" << '\n'; + return 0; + } + flag = false; + } + for (int j = 0; j < n; j++) { + if (!q[j].empty()) { + cout << "Impossible" << '\n'; + return 0; + } + } + cout << "Possible" << '\n'; +} diff --git a/BOJ_14731.cpp b/BOJ_14731.cpp new file mode 100644 index 0000000..2ab229d --- /dev/null +++ b/BOJ_14731.cpp @@ -0,0 +1,39 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +// #define MOD 1e9+7 +const ll INF = 10e12 + 10; +using namespace std; + +vector vp; +ll MOD = 1e9 + 7; + +bool compare(const pair &a, const pair &b) { + return a.second < b.second; +} + +ll Pow(ll n) { + ll res = 1, b = 2; + while (n) { + if (n & 1) res = res * b % MOD; + b = b * b % MOD; + n /= 2; + } + return res; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + ll c, k; + ll ans = 0; + while (n--) { + cin >> c >> k; + ans = (ans + ((c * k) % MOD) * Pow(k - 1) % MOD) % MOD; + } + + cout << ans; +} diff --git a/BOJ_16724.cpp b/BOJ_16724.cpp deleted file mode 100644 index 8f4ef10..0000000 --- a/BOJ_16724.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include -// #pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - - -int n, m, ans; -int dy[4] = {1, -1, 0, 0}; -int dx[4] = {0, 0, 1, -1}; -int table[1000][1000]; -int visited[1000][1000]; - -void dfs(int y, int x) { - visited[y][x] = 1; - int ny = y + dy[table[y][x]], nx = x + dx[table[y][x]]; - - if (visited[ny][nx] == 1) ans++; - if (visited[ny][nx] == 0) dfs(ny, nx); - visited[y][x] = 2; -} - -int main() { - cin >> n >> m; - for (int i = 0; i < n; i++) { - for (int j = 0; j < m; j++) { - char c; - cin >> c; - if (c == 'U') table[i][j] = 1; - else if (c == 'R') table[i][j] = 2; - else if (c == 'L') table[i][j] = 3; - } - } - for (int i = 0; i < n; i++) - for (int j = 0; j < m; j++) - if (visited[i][j] == 0) dfs(i, j); - cout << ans; -} diff --git a/BOJ_17127.cpp b/BOJ_17127.cpp deleted file mode 100644 index 1761408..0000000 --- a/BOJ_17127.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -vector v; -int n; - -int sum(int a, int b, int c) { - int tmp1 = 1, tmp2 = 1, tmp3 = 1, tmp4 = 1; - for (int i = 0; i < n; i++) - if (i <= a) tmp1 *= v[i]; - else if (i <= b) tmp2 *= v[i]; - else if (i <= c) tmp3 *= v[i]; - else tmp4 *= v[i]; - - return tmp1 + tmp2 + tmp3 + tmp4; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int ans = 0; - cin >> n; - for (int i = 0; i < n; i++) { - int num; - cin >> num; - v.push_back(num); - } - - - for (int i = 0; i < n; i++) { - for (int j = i + 1; j < n; j++) { - for (int k = j + 1; k < n - 1; k++) { - ans = max(ans, sum(i, j, k)); - } - } - } - cout << ans << '\n'; -} diff --git a/BOJ_1715.cpp b/BOJ_1715.cpp new file mode 100644 index 0000000..184ace8 --- /dev/null +++ b/BOJ_1715.cpp @@ -0,0 +1,32 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + + +priority_queue, greater > pq; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + for (int i = 0; i < n; i++) { + int num; + cin >> num; + pq.push(num); + } + int sum = 0; + while (pq.size() > 1) { + int n1 = pq.top(); + pq.pop(); + int n2 = pq.top(); + pq.pop(); + sum += (n1 + n2); + pq.push(n1 + n2); + } + cout << sum; +} diff --git a/BOJ_17835.cpp b/BOJ_17835.cpp new file mode 100644 index 0000000..5483367 --- /dev/null +++ b/BOJ_17835.cpp @@ -0,0 +1,58 @@ +#include + +using ll = long long; +using namespace std; + +ll n, m, k; +vector > G[101010]; +ll dist[101010]; +ll cost[101010]; +const ll INF = 1e18; + +priority_queue, vector >, greater > > pq; + +void Dijkstra() { + while (!pq.empty()) { + auto [v,c] = pq.top(); + pq.pop(); + if (dist[c] < v)continue; + for (auto nxt: G[c]) { + // 해당 g의 v u c 니까 + if (dist[nxt.first] > dist[c] + nxt.second) { + dist[nxt.first] = dist[c] + nxt.second; + pq.push({dist[nxt.first], nxt.first}); + } + } + } +} + +int main() { + cin >> n >> m >> k; + + fill(dist, dist + 101010, INF); + + for (int i = 0; i < m; i++) { + int u, v, c; + cin >> u >> v >> c; + G[v].push_back({u, c}); + } + + + for (int i = 0; i < k; i++) { + int num; + cin >> num; + dist[num] = 0; + pq.push({0, num}); + } + + Dijkstra(); + ll idx = 0; + ll mx = -1; + for (int i = 1; i <= n; i++) { + if (mx < dist[i]) { + idx = i; + mx = dist[i]; + } + } + cout << idx << "\n" << mx; +} diff --git a/BOJ_1918.cpp b/BOJ_1918.cpp deleted file mode 100644 index 8926d7a..0000000 --- a/BOJ_1918.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - - -stack s; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - string str, ans = ""; - cin >> str; - for (int i = 0; i < str.size(); i++) { - if (isalpha(str[i])) { - ans += str[i]; - } else if (str[i] == '(') { - s.push(str[i]); - } else if (str[i] == '*' || str[i] == '/') { - while (!s.empty() && (s.top() == '*' || s.top() == '/')) { - ans += s.top(); - s.pop(); - } - s.push(str[i]); - } else if (str[i] == '+' || str[i] == '-') { - while(!s.empty() && s.top() != '(') { - ans += s.top(); s.pop(); - } - - s.push(str[i]); - } else if (str[i] == ')') { - while (!s.empty() && s.top() != '(') { - ans += s.top(); - s.pop(); - } - s.pop(); - } - } - - while (!s.empty()) { - ans += s.top(); - - s.pop(); - } - cout << ans; -} diff --git a/BOJ_19539.cpp b/BOJ_19539.cpp new file mode 100644 index 0000000..aa1b516 --- /dev/null +++ b/BOJ_19539.cpp @@ -0,0 +1,26 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int A[101010]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n, sum = 0, cnt = 0; + cin >> n; + for (int i = 1; i <= n; i++) { + cin >> A[i]; + sum += A[i]; + cnt += A[i] / 2; + } + if (sum % 3 || cnt < sum / 3) { + cout << "NO" << '\n'; + } else { + cout << "YES" << '\n'; + } +} diff --git a/BOJ_24568.cpp b/BOJ_24568.cpp new file mode 100644 index 0000000..aa431a7 --- /dev/null +++ b/BOJ_24568.cpp @@ -0,0 +1,17 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int r, s, ans = 0; + cin >> r >> s; + ans = r * 8 + s * 3 - 28; + if (ans < 0)ans = 0; + cout << ans; +} diff --git a/BOJ_2458.cpp b/BOJ_2458.cpp new file mode 100644 index 0000000..1cb31b9 --- /dev/null +++ b/BOJ_2458.cpp @@ -0,0 +1,36 @@ +#include + +using namespace std; + +int table[505][505]; + +int main() { + int n, m; + cin >> n >> m; + while (m--) { + int a, b; + cin >> a >> b; + table[a][b] = 1; + } + for (int k = 1; k <= n; k++) { + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= n; j++) { + if (table[i][k] && table[k][j]) { + table[i][j] = 1; + } + } + } + } + int ans = 0; + for (int i = 1; i <= n; i++) { + int cnt = 0; + for (int j = 1; j <= n; j++) { + if (table[i][j] || table[j][i]) { + cnt++; + } + } + if (cnt == n - 1)ans++; + } + cout << ans << '\n'; +} + diff --git a/BOJ_16395.cpp b/BOJ_2523.cpp similarity index 51% rename from BOJ_16395.cpp rename to BOJ_2523.cpp index 016b61c..abb39b6 100644 --- a/BOJ_16395.cpp +++ b/BOJ_2523.cpp @@ -6,20 +6,23 @@ #define MOD 1000000000 const ll INF = 10e12 + 10; using namespace std; -int d[31][31]; + int main() { ios_base::sync_with_stdio(false), cin.tie(0); - int a, b; - cin >> a >> b; - for (int i = 0; i < 31; i++) { - d[i][0] = 1; - } - for (int i = 1; i < 31; i++) { - for (int j = 1; j <= i; j++) { - d[i][j] = d[i - 1][j - 1] + d[i - 1][j]; + int N; + cin >> N; + + for (int i = 0; i < N; i++) { + for (int j = 0; j <= i; j++) { + cout << "*"; } + cout << "\n"; } - cout << d[a - 1][b - 1] << '\n'; - + for (int i = N - 1; i > 0; i--) { + for (int j = 0; j < i; j++) { + cout << "*"; + } + cout << "\n"; + } } diff --git a/BOJ_2668.cpp b/BOJ_2668.cpp new file mode 100644 index 0000000..04cee37 --- /dev/null +++ b/BOJ_2668.cpp @@ -0,0 +1,39 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int Arr[101]; +bool visited[101]; +vector v; + +void DFS(int idx, int val) { + if (visited[idx]) { + if (idx == val) { + v.push_back(val); + } + } else { + visited[idx] = true; + DFS(Arr[idx], val); + } +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + for (int i = 1; i <= n; i++) + cin >> Arr[i]; + for (int i = 1; i <= n; i++) { + memset(visited, false, sizeof(visited)); + DFS(i, i); + } + cout << v.size() << '\n'; + for (auto iter: v) { + cout << iter << '\n'; + } +} diff --git a/BOJ_2688.cpp b/BOJ_2688.cpp new file mode 100644 index 0000000..e4445cd --- /dev/null +++ b/BOJ_2688.cpp @@ -0,0 +1,31 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +ll dp[66][11]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int t; + cin >> t; + for (int i = 0; i < 66; i++) { + for (int j = 0; j < 11; j++) { + dp[i][j] = 1; + } + } + for (int i = 2; i <= 65; i++) { + for (int j = 1; j < 10; j++) { + dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; + } + } + while (t--) { + int n; + cin >> n; + cout << dp[n + 1][9] << '\n'; + } +} diff --git a/BOJ_27172.cpp b/BOJ_2790.cpp similarity index 51% rename from BOJ_27172.cpp rename to BOJ_2790.cpp index 0ca3781..41d8337 100644 --- a/BOJ_27172.cpp +++ b/BOJ_2790.cpp @@ -7,29 +7,27 @@ const ll INF = 10e12 + 10; using namespace std; -vector v; -int board[1010101]; -int score[1010101]; +vector A; int main() { ios_base::sync_with_stdio(false), cin.tie(0); int n; cin >> n; - for (int i = 1; i <= n; i++) { + for (int i = 0; i < n; i++) { int num; cin >> num; - board[num] = 1; - v.push_back(num); + A.push_back(num); } - for (int i = 0; i < n; i++) { - for (int j = v[i] * 2; j < 1000001; j += v[i]) { - if (board[j] == 1) { - score[v[i]]++; - score[j]--; - } + + sort(A.begin(), A.end(), greater<>()); + + int mx = A[0] + 1, cnt = 0; + for (int i = 1; i < n; i++) { + if (A[i] + n >= mx) { + cnt++; } + mx = max(mx, A[i] + i + 1); } - for (int i = 0; i < n; i++) - cout << score[v[i]] << " "; + cout << cnt + 1 << '\n'; } diff --git a/BOJ_4485.cpp b/BOJ_4485.cpp new file mode 100644 index 0000000..316d1b4 --- /dev/null +++ b/BOJ_4485.cpp @@ -0,0 +1,58 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int table[130][130]; +int C[130][130]; +int n = 1; + +int dx[4] = {1, 0, -1, 0}; +int dy[4] = {0, 1, 0, -1}; + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int num = 0; + while (true) { + num++; + cin >> n; + if (n == 0)break; + + memset(table, 0, sizeof(table)); + for (int i = 0; i < n; i++) { + fill(C[i], C[i] + n, 1e9); + for (int j = 0; j < n; j++) { + cin >> table[i][j]; + } + } + + + queue q; + q.push({0, 0}); + C[0][0] = table[0][0]; + while (!q.empty()) { + auto cur = q.front(); + q.pop(); + for (int dir = 0; dir < 4; dir++) { + int nx = cur.first + dx[dir]; + int ny = cur.second + dy[dir]; + if (nx < 0 || ny < 0 || nx >= n || ny >= n)continue; + if (C[nx][ny] <= C[cur.first][cur.second] + table[nx][ny])continue; + C[nx][ny] = C[cur.first][cur.second] + table[nx][ny]; + q.push({nx, ny}); + } + } + // for (int i = 0; i < n; i++) { + // for (int j = 0; j < n; j++) { + // cout << C[i][j] << " "; + // } + // cout << '\n'; + // } + cout << "Problem " << num << ": " << C[n - 1][n - 1] << '\n'; + } +} diff --git a/BOJ_7578.cpp b/BOJ_7578.cpp new file mode 100644 index 0000000..4b127d0 --- /dev/null +++ b/BOJ_7578.cpp @@ -0,0 +1,52 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +constexpr int SZ = 505050*2; +using namespace std; + +int N, Q, A[SZ], B[SZ]; +ll T[SZ * 2]; + + +void Update(int x, int node = 1, int s = 1, int e = N) { + if (x < s || x > e)return; + T[node]++; + if (s < e) { + int m = (s + e) / 2; + Update(x, node * 2, s, m); + Update(x, node * 2 + 1, m + 1, e); + } +} + + +ll Query(int l, int r, int node = 1, int s = 1, int e = N) { + if (r < s || e < l)return 0; + if (l <= s && e <= r) return T[node]; + int m = (s + e) / 2; + return Query(l, r, node * 2, s, m) + Query(l, r, node * 2 + 1, m + 1, e); +} + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + cin >> N; + for (int i = 1; i <= N; i++) + cin >> A[i]; + for (int i = 1; i <= N; i++) { + int num; + cin >> num; + B[num] = i; + } + + ll ans = 0; + for (int i = 1; i <= N; i++) { + ans += Query(B[A[i]] + 1, N); + Update(B[A[i]]); + } + cout << ans; +} + diff --git a/BOJ_9463.cpp b/BOJ_9463.cpp new file mode 100644 index 0000000..c399f1f --- /dev/null +++ b/BOJ_9463.cpp @@ -0,0 +1,59 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +constexpr int SZ = 101010; +using namespace std; + +int N, Q, A[SZ], B[SZ]; +int T[SZ * 4]; + + +void Update(int x, int node = 1, int s = 1, int e = N) { + if (x < s || x > e)return; + T[node]++; + if (s < e) { + int m = (s + e) / 2; + Update(x, node * 2, s, m); + Update(x, node * 2 + 1, m + 1, e); + } +} + + +int Query(int l, int r, int node = 1, int s = 1, int e = N) { + if (r < s || e < l)return 0; + if (l <= s && e <= r) return T[node]; + int m = (s + e) / 2; + return Query(l, r, node * 2, s, m) + Query(l, r, node * 2 + 1, m + 1, e); +} + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int t; + cin >> t; + while (t--) { + cin >> N; + memset(A, 0, sizeof(A)); + memset(B, 0, sizeof(B)); + memset(T, 0, sizeof(T)); + for (int i = 1; i <= N; i++) + cin >> A[i]; + for (int i = 1; i <= N; i++) { + int num; + cin >> num; + B[num] = i; + } + + ll ans = 0; + for (int i = 1; i <= N; i++) { + ans += Query(B[A[i]] + 1, N); + Update(B[A[i]]); + } + cout << ans << '\n'; + } +} + diff --git a/BOJ_9663.cpp b/BOJ_9663.cpp deleted file mode 100644 index 301287f..0000000 --- a/BOJ_9663.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - - -int queen[16]; -int n, cnt = 0; - -bool checked(int m) { - for (int i = 0; i < m; i++) { - if (queen[m] == queen[i] || m - i == abs(queen[m] - queen[i])) - return false; - } - return true; -} - -void nQueen(int m) { - if (m == n) { - cnt++; - return; - } - for (int i = 0; i < n; i++) { - queen[m] = i; - if (checked(m)) - nQueen(m + 1); - } -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - cin >> n; - nQueen(0); - cout << cnt; -} diff --git a/M.cpp b/M.cpp new file mode 100644 index 0000000..53375b3 --- /dev/null +++ b/M.cpp @@ -0,0 +1,26 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +char arr[10101]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + for (int i = 0; i < n; i++) + cin >> arr[i]; + char A; + cin >> A; + int cnt = 0; + for (int i = 0; i < n; i++) { + if (arr[i] == A) + cnt++; + } + cout << cnt; +}