ll solve(vector<int>& heights) {
int n = heights.size();
vector<ll> left(n), right(n, n);
stack<int> s;
for (int i = 0; i < n; ++i) {
while (!s.empty() && heights[s.top()] <= heights[i]) {
right[s.top()] = i;
s.pop();
}
left[i] = s.empty() ? -1 : s.top();
s.push(i);
}
ll tot = 0;
for (int i = 0; i < n; ++i) {
tot += (i - left[i]) + (right[i] - i) - 1;
}
return tot;
}.
// CALCULATE REGION
MSCI โ
int n = heights.size();
vector<ll> left(n), right(n, n);
stack<int> s;
for (int i = 0; i < n; ++i) {
while (!s.empty() && heights[s.top()] <= heights[i]) {
right[s.top()] = i;
s.pop();
}
left[i] = s.empty() ? -1 : s.top();
s.push(i);
}
ll tot = 0;
for (int i = 0; i < n; ++i) {
tot += (i - left[i]) + (right[i] - i) - 1;
}
return tot;
}.
// CALCULATE REGION
MSCI โ
๐1
#include <iostream>
#include <vector>
using namespace std;
const int MOD = 10000000;
int solve(int N, const string& a) {
vector<vector<int>> dp(N, vector<int>(3, 0));
if (a[0] != 'R') dp[0][0] = 1;
if (a[0] != 'P') dp[0][1] = 1;
if (a[0] != 'S') dp[0][2] = 1;
for (int i = 1; i < N; ++i) {
if (a[i] != 'R') {
dp[i][0] = (dp[i-1][1] + dp[i-1][2]) % MOD;
}
if (a[i] != 'P') {
dp[i][1] = (dp[i-1][0] + dp[i-1][2]) % MOD;
}
if (a[i] != 'S') {
dp[i][2] = (dp[i-1][0] + dp[i-1][1]) % MOD;
}
}
int ans = (dp[N-1][0] + dp[N-1][1] + dp[N-1][2]) % MOD;
return ans;
}.
RocK paper scissors โ
#include <vector>
using namespace std;
const int MOD = 10000000;
int solve(int N, const string& a) {
vector<vector<int>> dp(N, vector<int>(3, 0));
if (a[0] != 'R') dp[0][0] = 1;
if (a[0] != 'P') dp[0][1] = 1;
if (a[0] != 'S') dp[0][2] = 1;
for (int i = 1; i < N; ++i) {
if (a[i] != 'R') {
dp[i][0] = (dp[i-1][1] + dp[i-1][2]) % MOD;
}
if (a[i] != 'P') {
dp[i][1] = (dp[i-1][0] + dp[i-1][2]) % MOD;
}
if (a[i] != 'S') {
dp[i][2] = (dp[i-1][0] + dp[i-1][1]) % MOD;
}
}
int ans = (dp[N-1][0] + dp[N-1][1] + dp[N-1][2]) % MOD;
return ans;
}.
RocK paper scissors โ
โค1
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
const int MOD = 1e9 + 7;
const int MAXN = 101;
vector<int> primes;
vector<vector<int>> adj;
vector<vector<long long>> dp;
bool is_prime[MAXN];
void sieve() {
fill(is_prime, is_prime + MAXN, true);
is_prime[0] = is_prime[1] = false;
for (int i = 2; i < MAXN; ++i) {
if (is_prime[i]) {
primes.push_back(i);
for (int j = 2 * i; j < MAXN; j += i) {
is_prime[j] = false;
}
}
}
}
void preprocess(int N) {
sieve();
adj.clear();
adj.resize(N);
dp.clear();
dp.assign(N, vector<long long>(primes.size(), 1));
}
void dfs(int node, int par = -1) {
for (int ne : adj[node]) {
if (ne == par) continue;
dfs(ne, node);
for (int i = 0; i < (int)primes.size(); i++) {
long long t = 0;
for (int j = 0; j < (int)primes.size(); j++) {
if (is_prime[primes[i] + primes[j]]) continue;
t += dp[ne][j];
t %= MOD;
}
dp[node][i] *= t;
dp[node][i] %= MOD;
}
}
}
int solve(int N, vector<vector<int>> edges) {
preprocess(N);
if (N == 1) return primes.size();
for (vector<int> edge : edges) {
adj[edge[0]].push_back(edge[1]);
adj[edge[1]].push_back(edge[0]);
}
dfs(0);
long long ans = 0;
for (int i = 0; i < (int)primes.size(); i++) {
ans += dp[0][i];
ans %= MOD;
}
return ans;
}
int main() {
int N;
cin >> N;
vector<vector<int>> edges(N-1, vector<int>(2));
for (int i = 0; i < N-1; i++) {
cin >> edges[i][0] >> edges[i][1];
edges[i][0]--;
edges[i][1]--;
}
cout << solve(N, edges) << endl;
return 0;
}
prime tree code โ
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
const int MOD = 1e9 + 7;
const int MAXN = 101;
vector<int> primes;
vector<vector<int>> adj;
vector<vector<long long>> dp;
bool is_prime[MAXN];
void sieve() {
fill(is_prime, is_prime + MAXN, true);
is_prime[0] = is_prime[1] = false;
for (int i = 2; i < MAXN; ++i) {
if (is_prime[i]) {
primes.push_back(i);
for (int j = 2 * i; j < MAXN; j += i) {
is_prime[j] = false;
}
}
}
}
void preprocess(int N) {
sieve();
adj.clear();
adj.resize(N);
dp.clear();
dp.assign(N, vector<long long>(primes.size(), 1));
}
void dfs(int node, int par = -1) {
for (int ne : adj[node]) {
if (ne == par) continue;
dfs(ne, node);
for (int i = 0; i < (int)primes.size(); i++) {
long long t = 0;
for (int j = 0; j < (int)primes.size(); j++) {
if (is_prime[primes[i] + primes[j]]) continue;
t += dp[ne][j];
t %= MOD;
}
dp[node][i] *= t;
dp[node][i] %= MOD;
}
}
}
int solve(int N, vector<vector<int>> edges) {
preprocess(N);
if (N == 1) return primes.size();
for (vector<int> edge : edges) {
adj[edge[0]].push_back(edge[1]);
adj[edge[1]].push_back(edge[0]);
}
dfs(0);
long long ans = 0;
for (int i = 0; i < (int)primes.size(); i++) {
ans += dp[0][i];
ans %= MOD;
}
return ans;
}
int main() {
int N;
cin >> N;
vector<vector<int>> edges(N-1, vector<int>(2));
for (int i = 0; i < N-1; i++) {
cin >> edges[i][0] >> edges[i][1];
edges[i][0]--;
edges[i][1]--;
}
cout << solve(N, edges) << endl;
return 0;
}
prime tree code โ
def getMinimumCost(arr):
n = len(arr)
ans = 0
max_diff = 0
for i in range(n - 1):
a, b = arr[i], arr[i + 1]
max_diff = max(max_diff,abs(a-b))
ans += ((a-b)** 2)
if max_diff % 2 == 0:
ans = ans -max_diff**2/2
else:
ans = ans-max_diff 2 + ((max_diff-1) / 2) 2 + ((max_diff+1) / 2) ** 2
return int(ans)
MINIMIZE ARRAY COST โ
n = len(arr)
ans = 0
max_diff = 0
for i in range(n - 1):
a, b = arr[i], arr[i + 1]
max_diff = max(max_diff,abs(a-b))
ans += ((a-b)** 2)
if max_diff % 2 == 0:
ans = ans -max_diff**2/2
else:
ans = ans-max_diff 2 + ((max_diff-1) / 2) 2 + ((max_diff+1) / 2) ** 2
return int(ans)
MINIMIZE ARRAY COST โ
class Solution {
public:
string oddString(vector<string>& words) {
map<string,int> mp;int k = 3;
for(int j = 0;j<words.size();j++){
string temp;
for(int i = 0;i<words[j].size()-1;i++) temp.push_back(words[j][i+1]-words[j][i]);
mp[temp]+= k++;
if(mp.size()==2 and j>2)return words[min(begin(mp)->second,next(begin(mp))->second)-3];
}
return words[min(begin(mp)->second,next(begin(mp))->second)-3];
}
};
// ODD ONE OUT
โ
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
long long solve(vector<int>& A) {
int N = A.size();
vector<vector<int>> dp(N + 1, vector<int>(N + 1, 0));
for (int L = 1; L <= N; ++L) {
stack<int> stack;
int trees = 0;
for (int R = L; R <= N; ++R) {
while (!stack.empty() && A[stack.top() - 1] < A[R - 1]) {
stack.pop();
}
if (stack.empty()) {
trees++;
}
stack.push(R);
int max_trees = trees;
if (R > L) {
if (stack.size() > 1) {
max_trees = max(max_trees, trees - 1);
} else {
max_trees = max(max_trees, trees);
}
if (R - L > trees) {
max_trees = max(max_trees, trees + 1);
}
}
dp[L][R] = max_trees;
}
}
long long result = 0;
for (int i = 1; i <= N; ++i) {
for (int j = i; j <= N; ++j) {
result = (result + dp[i][j]) % MOD;
}
}
return result;
}
int main() {
int n; cin>>n;
vector<int> A;
for(int i = 0; i < n; ++i) cin>>A[i];
cout << solve(A) << endl;
return 0;
}
//So many trees
using namespace std;
const int MOD = 1e9 + 7;
long long solve(vector<int>& A) {
int N = A.size();
vector<vector<int>> dp(N + 1, vector<int>(N + 1, 0));
for (int L = 1; L <= N; ++L) {
stack<int> stack;
int trees = 0;
for (int R = L; R <= N; ++R) {
while (!stack.empty() && A[stack.top() - 1] < A[R - 1]) {
stack.pop();
}
if (stack.empty()) {
trees++;
}
stack.push(R);
int max_trees = trees;
if (R > L) {
if (stack.size() > 1) {
max_trees = max(max_trees, trees - 1);
} else {
max_trees = max(max_trees, trees);
}
if (R - L > trees) {
max_trees = max(max_trees, trees + 1);
}
}
dp[L][R] = max_trees;
}
}
long long result = 0;
for (int i = 1; i <= N; ++i) {
for (int j = i; j <= N; ++j) {
result = (result + dp[i][j]) % MOD;
}
}
return result;
}
int main() {
int n; cin>>n;
vector<int> A;
for(int i = 0; i < n; ++i) cin>>A[i];
cout << solve(A) << endl;
return 0;
}
//So many trees
import java.util.Scanner;
public class Miain {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String S = scanner.nextLine();
StringBuilder S1 = new StringBuilder();
StringBuilder S2 = new StringBuilder();
for (int i = 0; i < S.length(); i++) {
if ((i + 1) % 2 == 0) {
S1.append(S.charAt(i));
} else {
S2.append(S.charAt(i));
}
}
System.out.println(S2.toString());
System.out.println(S1.toString());
scanner.close();
}
}
public class Miain {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String S = scanner.nextLine();
StringBuilder S1 = new StringBuilder();
StringBuilder S2 = new StringBuilder();
for (int i = 0; i < S.length(); i++) {
if ((i + 1) % 2 == 0) {
S1.append(S.charAt(i));
} else {
S2.append(S.charAt(i));
}
}
System.out.println(S2.toString());
System.out.println(S1.toString());
scanner.close();
}
}
vector<string> areAlmostEquivalent(vector<string>& s, vector<string>& t) {
vector<string> result;
auto countCharacters = [](const string& str) {
vector<int> count(26, 0);
for (char c : str) {
count[c - 'a']++;
}
return count;
};
for (size_t i = 0; i < s.size(); ++i) {
const string& str_s = s[i];
const string& str_t = t[i];
vector<int> count_s = countCharacters(str_s);
vector<int> count_t = countCharacters(str_t);
bool isAlmostEquivalent = true;
for (int j = 0; j < 26; ++j) {
if (abs(count_s[j] - count_t[j]) > 3) {
isAlmostEquivalent = false;
break;
}
}
if (isAlmostEquivalent) {
result.push_back("YES");
} else {
result.push_back("NO");
}
}
return result;
}
// Almost equivalent String โ
vector<string> result;
auto countCharacters = [](const string& str) {
vector<int> count(26, 0);
for (char c : str) {
count[c - 'a']++;
}
return count;
};
for (size_t i = 0; i < s.size(); ++i) {
const string& str_s = s[i];
const string& str_t = t[i];
vector<int> count_s = countCharacters(str_s);
vector<int> count_t = countCharacters(str_t);
bool isAlmostEquivalent = true;
for (int j = 0; j < 26; ++j) {
if (abs(count_s[j] - count_t[j]) > 3) {
isAlmostEquivalent = false;
break;
}
}
if (isAlmostEquivalent) {
result.push_back("YES");
} else {
result.push_back("NO");
}
}
return result;
}
// Almost equivalent String โ
๐1
SELECT
sector,
SUM(CAST(REPLACE(REPLACE(capitalization, 'B', '000000000'), 'M', '000000') AS DECIMAL(20, 2))) / 1000000 AS total_capitalization
FROM
companies
WHERE
sector != 'n/a' AND capitalization != 'n/a'
GROUP BY
sector
ORDER BY
sector;
SQL stock confirm
SQL: Calendar Application Events Report 2
SELECT
e.dt,
e.title,
GROUP_CONCAT(CONCAT(g.full_name, ' <', g.email_address, '>') ORDER BY g.full_name SEPARATOR ', ') AS guests
FROM
events e
JOIN
events_guests eg ON e.id = eg.event_id
JOIN
guests g ON eg.guest_id = g.id
WHERE
g.on_vacation = 0
GROUP BY
e.id, e.dt, e.title
ORDER BY
e.dt ASC
LIMIT 5;
๐1
def getMinCores(start, end):
events = [(t, 1) for t in start] + [(t, -1) for t in end]
events.sort(key=lambda x: (x[0], -x[1]))
max_cores = 0
current_cores = 0
for time, event_type in events:
if event_type == 1:
current_cores += 1
else:
current_cores -= 1
max_cores = max(max_cores, current_cores)
return max_cores
Process Scheduler โ
events = [(t, 1) for t in start] + [(t, -1) for t in end]
events.sort(key=lambda x: (x[0], -x[1]))
max_cores = 0
current_cores = 0
for time, event_type in events:
if event_type == 1:
current_cores += 1
else:
current_cores -= 1
max_cores = max(max_cores, current_cores)
return max_cores
Process Scheduler โ
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
const int MOD = 1000000007;
using namespace std;
void dfs(int node, const unordered_map<int, vector<pair<int, int>>>& tree, vector<long long>& magnitudes) {
auto it = tree.find(node);
if (it != tree.end()) {
for (const auto& neighbor : it->second) {
int next_node = neighbor.first;
int weight = neighbor.second;
magnitudes[next_node] = (magnitudes[node] * weight) % MOD;
dfs(next_node, tree, magnitudes);
}
}
}
vector<int> findEquivalentMagnitude(int unit_nodes, vector<int> unit_from, vector<int> unit_to, vector<int> unit_weight, int x) {
unordered_map<int, vector<pair<int, int>>> tree;
for (int i = 0; i < unit_from.size(); ++i) {
tree[unit_from[i]].emplace_back(unit_to[i], unit_weight[i]);
}
vector<long long> magnitudes(unit_nodes + 1, -1);
magnitudes[1] = x;
dfs(1, tree, magnitudes);
vector<int> result(unit_nodes);
for (int i = 1; i <= unit_nodes; ++i) {
result[i - 1] = magnitudes[i];
}
return result;
}
#include <vector>
#include <unordered_map>
#include <algorithm>
const int MOD = 1000000007;
using namespace std;
void dfs(int node, const unordered_map<int, vector<pair<int, int>>>& tree, vector<long long>& magnitudes) {
auto it = tree.find(node);
if (it != tree.end()) {
for (const auto& neighbor : it->second) {
int next_node = neighbor.first;
int weight = neighbor.second;
magnitudes[next_node] = (magnitudes[node] * weight) % MOD;
dfs(next_node, tree, magnitudes);
}
}
}
vector<int> findEquivalentMagnitude(int unit_nodes, vector<int> unit_from, vector<int> unit_to, vector<int> unit_weight, int x) {
unordered_map<int, vector<pair<int, int>>> tree;
for (int i = 0; i < unit_from.size(); ++i) {
tree[unit_from[i]].emplace_back(unit_to[i], unit_weight[i]);
}
vector<long long> magnitudes(unit_nodes + 1, -1);
magnitudes[1] = x;
dfs(1, tree, magnitudes);
vector<int> result(unit_nodes);
for (int i = 1; i <= unit_nodes; ++i) {
result[i - 1] = magnitudes[i];
}
return result;
}
int findMaxUses(vector<int>& costs, vector<int>& uses, int budget) {
int n = costs.size();
if (n < 2) {
return -1;
}
vector<pair<int, int>> ft;
for (int i = 0; i < n; ++i) {
ft.push_back({costs[i], uses[i]});
}
sort(ft.begin(), ft.end());
int mu = -1;
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
int tc = ft[i].first + ft[j].first;
if (tc <= budget) {
int bg = ft[i].second + ft[j].second;
mu = max(mu, bg);
} else {
break;
}
}
}
return mu;
}
DE Shaw โ
int n = costs.size();
if (n < 2) {
return -1;
}
vector<pair<int, int>> ft;
for (int i = 0; i < n; ++i) {
ft.push_back({costs[i], uses[i]});
}
sort(ft.begin(), ft.end());
int mu = -1;
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
int tc = ft[i].first + ft[j].first;
if (tc <= budget) {
int bg = ft[i].second + ft[j].second;
mu = max(mu, bg);
} else {
break;
}
}
}
return mu;
}
DE Shaw โ
Forwarded from OffCampus Jobs | OnCampus Jobs | Daily Jobs Updates | Lastest Jobs | All Jobs | CSE Jobs | Fresher Jobs โฅ (Dushyant)
Almabase is hiring for Frontend engineering intern- Remote
Batch: 2024/2025/2026/2027
Stipend: โน40,000
Apply here: https://wellfound.com/l/2AoQyy
Batch: 2024/2025/2026/2027
Stipend: โน40,000
Apply here: https://wellfound.com/l/2AoQyy