def maxSkillSum(n, expertise, skill):
balance_map = {}
balance = 0
max_sum = float('-inf')
a = [0] * (n + 1)
for i in range(n):
a[i + 1] = a[i] + skill[i]
for i in range(n):
if expertise[i] == 0:
balance += 1
else:
balance -= 1
if balance == 0:
max_sum = max(max_sum, a[i + 1])
if balance in balance_map:
prev_index = balance_map[balance]
max_sum = max(max_sum, a[i + 1] - a[prev_index])
if balance not in balance_map:
balance_map[balance] = i + 1
return max_sum
Amazon โ
from collections import defaultdict, deque
def countDelayedFlights(flight_nodes, flight_from, flight_to, delayed):
graph = defaultdict(list)
for u, v in zip(flight_from, flight_to):
graph[v].append(u)
delayed_set = set(delayed)
queue = deque(delayed)
while queue:
flight = queue.popleft()
for dependent in graph[flight]:
if dependent not in delayed_set:
delayed_set.add(dependent)
queue.append(dependent)
return sorted(delayed_set)
Flight Dependencies โ
from collections import deque
def bfs(start, n, adj):
dist = [-1] * (n + 1)
dist[start] = 0
queue = deque([start])
while queue:
node = queue.popleft()
for neighbor in adj[node]:
if dist[neighbor] == -1:
dist[neighbor] = dist[node] + 1
queue.append(neighbor)
return dist
def solve(node_from, node_to, N, K, special_nodes):
adj = [[] for _ in range(N + 1)]
for i in range(len(node_from)):
u = node_from[i]
v = node_to[i]
adj[u].append(v)
adj[v].append(u)
dist_from_1 = bfs(1, N, adj)
dist_from_n = bfs(N, N, adj)
min_dist = dist_from_1[N]
for i in range(K):
for j in range(i + 1, K):
u = special_nodes[i]
v = special_nodes[j]
new_dist = min(dist_from_1[u] + 1 + dist_from_n[v], dist_from_1[v] + 1 + dist_from_n[u])
min_dist = min(min_dist, new_dist)
return min_dist
Special Nodes Path โ
๐1
def generate_log_stream(N, A):
log_stream = []
prev = None
i = 0
while i < N:
val = A[i]
count = 1
while i + 1 < N and A[i + 1] == val:
i += 1
count += 1
if count >= 2:
if prev is None:
log_stream.append(1)
else:
if val > prev:
log_stream.append(1)
elif val < prev:
log_stream.append(-1)
else:
log_stream.append(-1)
prev = val
i += 1
for log in log_stream:
print(log)
Tiger Analytics โ
๐1
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int bfs(vector<vector<int>> &g, int n, int m, int x, int y, vector<vector<int>> &d) {
queue<pair<int, int>> q;
q.push(make_pair(x, y));
d[x][y] = 0;
int dx[] = {-1, 1, 0, 0}, dy[] = {0, 0, -1, 1};
while (!q.empty()) {
pair<int, int> p = q.front();
q.pop();
int cx = p.first, cy = p.second;
for (int i = 0; i < 4; i++) {
int nx = cx + dx[i], ny = cy + dy[i];
if (nx >= 0 && ny >= 0 && nx < n && ny < m && d[nx][ny] == 1e9) {
d[nx][ny] = d[cx][cy] + 2;
q.push(make_pair(nx, ny));
}
}
}
return 0;
}
int minDays(vector<vector<int>> &g, int n, int m) {
vector<pair<int, int>> s;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (g[i][j] > 0) s.push_back(make_pair(i, j));
if (s.empty()) return 0;
vector<vector<int>> d(n, vector<int>(m, 1e9));
bfs(g, n, m, s[0].first, s[0].second, d);
int t = g[s[0].first][s[0].second];
for (int i = 1; i < s.size(); i++) {
t += d[s[i].first][s[i].second] + g[s[i].first][s[i].second];
fill(d.begin(), d.end(), vector<int>(m, 1e9));
bfs(g, n, m, s[i].first, s[i].second, d);
}
return (t + 7) / 8;
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> g(n, vector<int>(m));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> g[i][j];
cout << minDays(g, n, m) << endl;
}
Nucleus โ
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int kthP(int k) {
vector<bool> p(10000, true);
p[0] = p[1] = false;
vector<int> ps;
for (int i = 2; i < 10000; i++) {
if (p[i]) {
ps.push_back(i);
for (int j = i * 2; j < 10000; j += i)
p[j] = false;
}
}
return ps[k - 1];
}
int bfs(int s, vector<vector<int>> &adj, vector<bool> &vis) {
queue<int> q;
q.push(s);
vis[s] = true;
int c = 0;
while (!q.empty()) {
int u = q.front();
q.pop();
c++;
for (int v : adj[u]) {
if (!vis[v]) {
vis[v] = true;
q.push(v);
}
}
}
return c;
}
int main() {
int a, b;
cin >> a >> b;
vector<vector<int>> adj(a + 1);
for (int i = 0; i < b; i++) {
int c, d;
cin >> c >> d;
adj[c].push_back(d);
adj[d].push_back(c);
}
vector<bool> vis(a + 1, false);
int mx = 0;
for (int i = 1; i <= a; i++) {
if (!vis[i]) {
mx = max(mx, bfs(i, adj, vis));
}
}
cout << mx << " " << kthP(mx) << endl;
return 0;
}
Nucleus โ
import heapq
def min_time(n, p, q, r, t1, t2, t3):
d = [0] * p
e = [0] * q
x = [0] * r
t = 0
for _ in range(n):
sd = heapq.heappop(d)
se = heapq.heappop(e)
sx = heapq.heappop(x)
se = max(se, sd + t1)
sx = max(sx, se + t2)
f = sx + t3
heapq.heappush(d, sd + t1)
heapq.heappush(e, se + t2)
heapq.heappush(x, sx + t3)
t = max(t, f)
return t
n = int(input())
p, q, r, t1, t2, t3 = map(int, input().split())
print(min_time(n, p, q, r, t1, t2, t3))
Airtel
perfume factoryโ
string solution(vector<vector<int>> operations) {
set<int> obstacles;
string ans = "";
for (auto &op : operations) {
if (op[0] == 1) {
obstacles.insert(op[1]);
} else if (op[0] == 2) {
int x = op[1];
int size = op[2];
int start = x - size;
auto it = obstacles.lower_bound(start);
if (it != obstacles.end() && *it < x) {
ans += '0';
} else {
ans += '1';
}
}
}
return ans;
}
Yugabyte โ
set<int> obstacles;
string ans = "";
for (auto &op : operations) {
if (op[0] == 1) {
obstacles.insert(op[1]);
} else if (op[0] == 2) {
int x = op[1];
int size = op[2];
int start = x - size;
auto it = obstacles.lower_bound(start);
if (it != obstacles.end() && *it < x) {
ans += '0';
} else {
ans += '1';
}
}
}
return ans;
}
Yugabyte โ
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <bits/stdc++.h>
using namespace std;
#define ll long long
class SegmentTree {
private:
vector<ll> t;
ll n;
void upd(ll i, ll v, ll x, ll s, ll e) {
if (s == e) {
t[x] += v;
} else {
ll m = (s + e) / 2;
if (i <= m) {
upd(i, v, 2 * x, s, m);
} else {
upd(i, v, 2 * x + 1, m + 1, e);
}
t[x] = t[2 * x] + t[2 * x + 1];
}
}
ll qry(ll l, ll r, ll x, ll s, ll e) {
if (r < s || e < l) return 0;
if (l <= s && e <= r) return t[x];
ll m = (s + e) / 2;
ll left = qry(l, r, 2 * x, s, m);
ll right = qry(l, r, 2 * x + 1, m + 1, e);
return left + right;
}
public:
SegmentTree(ll sz) : n(sz) {
t.resize(4 * n, 0);
}
void upd(ll i, ll v) {
upd(i, v, 1, 0, n - 1);
}
ll qry(ll l, ll r) {
return qry(l, r, 1, 0, n - 1);
}
};
vector<ll> solve(ll n, vector<ll>& a, ll q, vector<ll>& qrs) {
vector<ll> res;
SegmentTree st(n);
vector<ll> b = a;
sort(b.begin(), b.end());
unordered_map<ll, ll> mp;
for (ll i = 0; i < n; ++i) mp[b[i]] = i;
auto cnt_inv = [&]() -> ll {
ll inv = 0;
for (ll i = n - 1; i >= 0; --i) {
ll idx = mp[a[i]];
inv += st.qry(0, idx - 1);
st.upd(idx, 1);
}
for (ll i = 0; i < n; ++i) {
st.upd(mp[a[i]], -1);
}
return inv;
};
for (ll x : qrs) {
reverse(a.begin(), a.begin() + x);
res.push_back(cnt_inv());
}
return res;
}
Reverse Inversion โ