Who have Google and Goldman Sachs exam guys?
Send questions here solutions will be provide
Send questions here solutions will be provide
๐14
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
const int MAXN = 200001;
vector<int> tree[MAXN];
char C[MAXN];
int result[MAXN];
bool isPalindrome[MAXN];
bool visited[MAXN];
bool checkPalindrome(const string& s) {
int n = s.size();
for (int i = 0; i < n / 2; ++i) {
if (s[i] != s[n - i - 1]) {
return false;
}
}
return true;
}
string dfs(int u) {
visited[u] = true;
string S = "";
for (int v : tree[u]) {
if (!visited[v]) {
S += dfs(v);
}
}
S += C[u];
isPalindrome[u] = checkPalindrome(S);
return S;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin >> N;
for (int i = 1; i < N; ++i) {
int u, v;
cin >> u >> v;
tree[u].push_back(v);
tree[v].push_back(u);
}
for (int i = 1; i <= N; ++i) {
cin >> C[i];
}
memset(visited, false, sizeof(visited));
dfs(1);
int Q;
cin >> Q;
while (Q--) {
int u;
cin >> u;
cout << (isPalindrome[u] ? 1 : 0) << "\n";
}
return 0;
}.
// FIND PALIDROME
Google โ
#include <vector>
#include <cstring>
using namespace std;
const int MAXN = 200001;
vector<int> tree[MAXN];
char C[MAXN];
int result[MAXN];
bool isPalindrome[MAXN];
bool visited[MAXN];
bool checkPalindrome(const string& s) {
int n = s.size();
for (int i = 0; i < n / 2; ++i) {
if (s[i] != s[n - i - 1]) {
return false;
}
}
return true;
}
string dfs(int u) {
visited[u] = true;
string S = "";
for (int v : tree[u]) {
if (!visited[v]) {
S += dfs(v);
}
}
S += C[u];
isPalindrome[u] = checkPalindrome(S);
return S;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin >> N;
for (int i = 1; i < N; ++i) {
int u, v;
cin >> u >> v;
tree[u].push_back(v);
tree[v].push_back(u);
}
for (int i = 1; i <= N; ++i) {
cin >> C[i];
}
memset(visited, false, sizeof(visited));
dfs(1);
int Q;
cin >> Q;
while (Q--) {
int u;
cin >> u;
cout << (isPalindrome[u] ? 1 : 0) << "\n";
}
return 0;
}.
// FIND PALIDROME
Google โ
โค2๐2
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
vector<int> weights(N);
for (int i = 0; i < N; ++i) {
cin >> weights[i];
}
int B;
cin >> B;
int totalWeight = 0;
for (int i = 0; i < N; ++i) {
totalWeight += weights[i];
}
int totalCapacity = B * 10;
if (totalWeight <= totalCapacity) {
cout << "True" << endl;
} else {
cout << "False" << endl;
}
}
return 0;
}
Goldman Sachs โ
#include <vector>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
vector<int> weights(N);
for (int i = 0; i < N; ++i) {
cin >> weights[i];
}
int B;
cin >> B;
int totalWeight = 0;
for (int i = 0; i < N; ++i) {
totalWeight += weights[i];
}
int totalCapacity = B * 10;
if (totalWeight <= totalCapacity) {
cout << "True" << endl;
} else {
cout << "False" << endl;
}
}
return 0;
}
Goldman Sachs โ
โค1๐1
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
long clinicShed(vector<long> patients, int k) {
sort(patients.begin(), patients.end());
long minShedLength = LONG_MAX;
int n = patients.size();
for (int start = 0; start <= n - k; ++start) {
int end = start + k - 1;
long length = patients[end] - patients[start] + 1;
minShedLength = min(minShedLength, length);
}
return minShedLength;
}.
Vaccination Drive โ
GOLDMAN
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
long clinicShed(vector<long> patients, int k) {
sort(patients.begin(), patients.end());
long minShedLength = LONG_MAX;
int n = patients.size();
for (int start = 0; start <= n - k; ++start) {
int end = start + k - 1;
long length = patients[end] - patients[start] + 1;
minShedLength = min(minShedLength, length);
}
return minShedLength;
}.
Vaccination Drive โ
GOLDMAN
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
int f(int id, int taken, int t1, int t2, int k, vector<int> &a, vector<vector<int>> &dp) {
if (taken == 2 * k) {
return t1 ^ t2;
}
if (id >= a.size()) {
return INT_MIN;
}
if (dp[id][taken] != -1) {
return dp[id][taken];
}
int take = INT_MIN, ntake = INT_MIN;
if (taken >= k) {
take = f(id + 1, taken + 1, t1, t2|a[id], k, a, dp);
} else {
take = f(id + 1, taken + 1, t1|a[id],t2, k, a, dp);
}
ntake = f(id + 1, taken, t1, t2, k, a, dp);
return dp[id][taken] = max(take, ntake);
}
OR XOR โ
Google
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
int f(int id, int taken, int t1, int t2, int k, vector<int> &a, vector<vector<int>> &dp) {
if (taken == 2 * k) {
return t1 ^ t2;
}
if (id >= a.size()) {
return INT_MIN;
}
if (dp[id][taken] != -1) {
return dp[id][taken];
}
int take = INT_MIN, ntake = INT_MIN;
if (taken >= k) {
take = f(id + 1, taken + 1, t1, t2|a[id], k, a, dp);
} else {
take = f(id + 1, taken + 1, t1|a[id],t2, k, a, dp);
}
ntake = f(id + 1, taken, t1, t2, k, a, dp);
return dp[id][taken] = max(take, ntake);
}
OR XOR โ
def calculateF(B, K):
orPart = 0
xorPart = 0
for i in range(K):
orPart |= B[i]
for i in range(K, 2 * K):
xorPart ^= B[i]
return orPart + xorPart
def findMaxF(N, K, A):
maxF = 0
from itertools import combinations
for subset in combinations(A, 2 * K):
currentF = calculateF(subset, K)
maxF = max(maxF, currentF)
return maxF
def main():
T = int(input())
for _ in range(T):
N, K = map(int, input().split())
A = list(map(int, input().split()))
print(findMaxF(N, K, A))
if name == "main":
main()
// COMPLEX โ
Google
orPart = 0
xorPart = 0
for i in range(K):
orPart |= B[i]
for i in range(K, 2 * K):
xorPart ^= B[i]
return orPart + xorPart
def findMaxF(N, K, A):
maxF = 0
from itertools import combinations
for subset in combinations(A, 2 * K):
currentF = calculateF(subset, K)
maxF = max(maxF, currentF)
return maxF
def main():
T = int(input())
for _ in range(T):
N, K = map(int, input().split())
A = list(map(int, input().split()))
print(findMaxF(N, K, A))
if name == "main":
main()
// COMPLEX โ
๐1
using ll = long long;
class SegTree {
vector<ll> tree;
vector<ll> A;
ll n;
public:
SegTree(const vector<int>& arr) {
n = arr.size();
A = vector<ll>(arr.begin(), arr.end());
tree.resize(4 * n, 0);
build(0, 0, n - 1);
}
void build(ll node, ll start, ll end) {
if (start == end) {
tree[node] = A[start];
} else {
ll mid = (start + end) / 2;
build(2 * node + 1, start, mid);
build(2 * node + 2, mid + 1, end);
tree[node] = tree[2 * node + 1] + tree[2 * node + 2];
}
}
void upd(ll idx, ll val, ll node, ll start, ll end) {
if (start == end) {
A[idx] = val;
tree[node] = val;
} else {
ll mid = (start + end) / 2;
if (idx <= mid) {
upd(idx, val, 2 * node + 1, start, mid);
} else {
upd(idx, val, 2 * node + 2, mid + 1, end);
}
tree[node] = tree[2 * node + 1] + tree[2 * node + 2];
}
}
ll qry(ll L, ll R, ll node, ll start, ll end) {
if (R < start || end < L) {
return 0;
}
if (L <= start && end <= R) {
return tree[node];
}
ll mid = (start + end) / 2;
ll left = qry(L, R, 2 * node + 1, start, mid);
ll right = qry(L, R, 2 * node + 2, mid + 1, end);
return left + right;
}
void upd(ll idx, ll val) {
upd(idx, val, 0, 0, n - 1);
}
ll qry(ll L, ll R) {
return qry(L, R, 0, 0, n - 1);
}
};
vector<ll> solve(int N, int l, vector<int> A, vector<vector<int>> query) {
SegTree segTree(A);
vector<ll> results;
for (const auto& q : query) {
if (q[0] == 1) {
int idx = q[1];
int val = q[2];
segTree.upd(idx - 1, val);
} else if (q[0] == 2) {
int L = q[1];
int R = q[2];
ll sum = 0;
for (int i = L - 1; i < R; ++i) {
for (int j = i; j < R; ++j) {
sum += segTree.qry(i, j);
}
}
results.push_back(sum);
}
}
return results;
}
Source : Hola
class SegTree {
vector<ll> tree;
vector<ll> A;
ll n;
public:
SegTree(const vector<int>& arr) {
n = arr.size();
A = vector<ll>(arr.begin(), arr.end());
tree.resize(4 * n, 0);
build(0, 0, n - 1);
}
void build(ll node, ll start, ll end) {
if (start == end) {
tree[node] = A[start];
} else {
ll mid = (start + end) / 2;
build(2 * node + 1, start, mid);
build(2 * node + 2, mid + 1, end);
tree[node] = tree[2 * node + 1] + tree[2 * node + 2];
}
}
void upd(ll idx, ll val, ll node, ll start, ll end) {
if (start == end) {
A[idx] = val;
tree[node] = val;
} else {
ll mid = (start + end) / 2;
if (idx <= mid) {
upd(idx, val, 2 * node + 1, start, mid);
} else {
upd(idx, val, 2 * node + 2, mid + 1, end);
}
tree[node] = tree[2 * node + 1] + tree[2 * node + 2];
}
}
ll qry(ll L, ll R, ll node, ll start, ll end) {
if (R < start || end < L) {
return 0;
}
if (L <= start && end <= R) {
return tree[node];
}
ll mid = (start + end) / 2;
ll left = qry(L, R, 2 * node + 1, start, mid);
ll right = qry(L, R, 2 * node + 2, mid + 1, end);
return left + right;
}
void upd(ll idx, ll val) {
upd(idx, val, 0, 0, n - 1);
}
ll qry(ll L, ll R) {
return qry(L, R, 0, 0, n - 1);
}
};
vector<ll> solve(int N, int l, vector<int> A, vector<vector<int>> query) {
SegTree segTree(A);
vector<ll> results;
for (const auto& q : query) {
if (q[0] == 1) {
int idx = q[1];
int val = q[2];
segTree.upd(idx - 1, val);
} else if (q[0] == 2) {
int L = q[1];
int R = q[2];
ll sum = 0;
for (int i = L - 1; i < R; ++i) {
for (int j = i; j < R; ++j) {
sum += segTree.qry(i, j);
}
}
results.push_back(sum);
}
}
return results;
}
Source : Hola
๐2โค1
#include <bits/stdc++.h>
using namespace std;
#define ll long long
void dfs2(vector<ll>g[],ll v,ll p,vector<vector<ll>>&dp,vector<ll>&a,ll k)
{
dp[v][0]=a[v];
dp[v][1]=a[v]^k;
for(auto it:g[v])
{
if(it!=p)
{
dfs2(g,it,v,dp,a,k);
dp[v][0]+=dp[it][0];
dp[v][1]+=dp[it][1];
}
}
}
void dfs(vector<ll>g[],ll v,ll p,vector<vector<ll>>&dp,ll&ans)
{
ans=max(ans,dp[1][0]-dp[v][0]+dp[v][1]);
for(auto it:g[v])
{
if(it!=p)
{
ans=max(ans,dp[1][1]-dp[it][1]+dp[it][0]);
dfs(g,it,v,dp,ans);
}
}
}
ll solve(ll n,ll k,vector<ll>&a,vector<vector<ll>>&e)
{
vector<ll>g[n+10];
ll i;
assert(1<=n and n<=1e5);
for(ll i=0;i<n;i++)
{
ll u=e[i][0];
ll v=e[i][1];
g[v].push_back(u);
g[u].push_back(v);
}
a.insert(a.begin(),0);
vector<vector<ll>>dp(n+10,vector<ll>(2));
ll ans=0;
dfs2(g,1,0,dp,a,k);
ans=max(ans,dp[1][0],dp[1][1]);
dfs(g,1,0,dp,ans);
return ans;
}
Xor Subtree โ
๐1
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, k;
cin >> n >> k;
map<int, int> mp;
for (int i = 0; i < n; ++i) {
int l, r, x;
cin >> l >> r >> x;
mp[l] += x;
mp[r + 1] -= x;
}
vector<int> al;
int sum = 0;
for (auto& e : mp) {
sum += e.second;
al.push_back(sum);
}
int ans = 0, maxi = 0;
unordered_map<int, int> lp;
for (int i = 0; i < al.size(); ++i) {
int num = al[i];
int curr = lp[num - k] + 1;
lp[num] = max(lp[num], curr);
if (ans < lp[num] || (ans == lp[num] && maxi > num)) {
maxi = num;
ans = lp[num];
}
}
cout << ans << " ";
for (int i = ans-1; i >=0; i--) {
cout << maxi - i * k << " ";
}
cout << "\n";
return 0;
}
complex subsequence โ
#include<bits/stdc++.h>
using namespace std;
int findMessages (int N, vector<string> A) {
int ans=N;
set<string> st;
for(int i=0; i<N; i++) {
string s;
for(int j=0; j<A[i].size(); j++)
s += 'a' + ('z' - A[i][j]);
if (st.find(s) != st.end())
ans -= 1;
st.insert(A[i]);
}
return ans;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
vector<string> A(N);
for(int i_A = 0; i_A < N; i_A++)
{
cin >> A[i_A];
}
int out_;
out_ = findMessages(N, A);
cout << out_;
}
Alice and messages โ
using namespace std;
int findMessages (int N, vector<string> A) {
int ans=N;
set<string> st;
for(int i=0; i<N; i++) {
string s;
for(int j=0; j<A[i].size(); j++)
s += 'a' + ('z' - A[i][j]);
if (st.find(s) != st.end())
ans -= 1;
st.insert(A[i]);
}
return ans;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
vector<string> A(N);
for(int i_A = 0; i_A < N; i_A++)
{
cin >> A[i_A];
}
int out_;
out_ = findMessages(N, A);
cout << out_;
}
Alice and messages โ
vector<string> solve(string t, int Q, vector<string> q) {
stringstream ss(t);
string tk;
vector<string> p;
while (getline(ss, tk, '\"')) {
p.push_back(tk);
}
vector<string> r;
for (string qry : q) {
size_t pos = qry.find_last_of('.');
qry = qry.substr(pos + 1);
int j = 0;
for (j = 0; j < p.size(); j++) {
if (p[j] == qry) {
break;
}
}
r.push_back(p[j + 2]);
}
return r;
}
Jason praising โ
stringstream ss(t);
string tk;
vector<string> p;
while (getline(ss, tk, '\"')) {
p.push_back(tk);
}
vector<string> r;
for (string qry : q) {
size_t pos = qry.find_last_of('.');
qry = qry.substr(pos + 1);
int j = 0;
for (j = 0; j < p.size(); j++) {
if (p[j] == qry) {
break;
}
}
r.push_back(p[j + 2]);
}
return r;
}
Jason praising โ
โค1
def solve(N, A, D, V):
info_index = {
'bank_account_number': 0,
'account_holder_first_name': 1,
'account_holder_last_name': 2,
'registered_mobile_number': 3,
'branch_code': 4
}
filtered_accounts = [account for account in A if str(account[info_index[D]]) == V]
sorted_accounts = sorted(filtered_accounts, key=lambda x: int(x[0]))
output = "\n".join([" ".join(map(str, account)) for account in sorted_accounts])
return output
N = int(input())
A = []
for _ in range(N):
account_info = input().split()
account_info[0] = int(account_info[0])
account_info[3] = int(account_info[3])
account_info[4] = int(account_info[4])
A.append(account_info)
D = input()
V = input()
result = solve(N, A, D, V)
print(result)
Searching google pay saved accountโ
info_index = {
'bank_account_number': 0,
'account_holder_first_name': 1,
'account_holder_last_name': 2,
'registered_mobile_number': 3,
'branch_code': 4
}
filtered_accounts = [account for account in A if str(account[info_index[D]]) == V]
sorted_accounts = sorted(filtered_accounts, key=lambda x: int(x[0]))
output = "\n".join([" ".join(map(str, account)) for account in sorted_accounts])
return output
N = int(input())
A = []
for _ in range(N):
account_info = input().split()
account_info[0] = int(account_info[0])
account_info[3] = int(account_info[3])
account_info[4] = int(account_info[4])
A.append(account_info)
D = input()
V = input()
result = solve(N, A, D, V)
print(result)
Searching google pay saved accountโ
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n; cin >> n;
vector<char>decode(62);
for (int i = 0; i < 10; ++i)
{
decode[i] = (i + '0');
}
for (int i = 10; i <= 35 ; ++i)
{
decode[i] = ((i - 10) + 'A');
}
for (int i = 36; i <= 61 ; ++i)
{
decode[i] = ((i - 36) + 'a');
}
string res = "";
while (n) {
int temp = n % 62;
res += decode[temp];
n /= 62;
}
reverse(res.begin(), res.end());
cout << res << endl;
}
Encode it โ
using namespace std;
int main()
{
int n; cin >> n;
vector<char>decode(62);
for (int i = 0; i < 10; ++i)
{
decode[i] = (i + '0');
}
for (int i = 10; i <= 35 ; ++i)
{
decode[i] = ((i - 10) + 'A');
}
for (int i = 36; i <= 61 ; ++i)
{
decode[i] = ((i - 36) + 'a');
}
string res = "";
while (n) {
int temp = n % 62;
res += decode[temp];
n /= 62;
}
reverse(res.begin(), res.end());
cout << res << endl;
}
Encode it โ
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Phone {
int price;
int speed;
};
bool comparePhones(const Phone &a, const Phone &b) {
if (a.price == b.price) {
return a.speed > b.speed;
}
return a.price < b.price;
}
int main() {
int N;
cin >> N;
vector<Phone> phones(N);
for (int i = 0; i < N; ++i) {
cin >> phones[i].price >> phones[i].speed;
}
int Q;
cin >> Q;
while (Q--) {
int L, R;
cin >> L >> R;
vector<Phone> filteredPhones;
for (const auto &phone : phones) {
if (phone.price >= L && phone.price <= R) {
filteredPhones.push_back(phone);
}
}
sort(filteredPhones.begin(), filteredPhones.end(), comparePhones);
cout << filteredPhones.size() << " mobiles are available" << endl;
for (const auto &phone : filteredPhones) {
cout << "Price " << phone.price << " Speed " << phone.speed << endl;
}
}
return 0;
}.
// SEARCH FILTER TRY :) โ
#include <vector>
#include <algorithm>
using namespace std;
struct Phone {
int price;
int speed;
};
bool comparePhones(const Phone &a, const Phone &b) {
if (a.price == b.price) {
return a.speed > b.speed;
}
return a.price < b.price;
}
int main() {
int N;
cin >> N;
vector<Phone> phones(N);
for (int i = 0; i < N; ++i) {
cin >> phones[i].price >> phones[i].speed;
}
int Q;
cin >> Q;
while (Q--) {
int L, R;
cin >> L >> R;
vector<Phone> filteredPhones;
for (const auto &phone : phones) {
if (phone.price >= L && phone.price <= R) {
filteredPhones.push_back(phone);
}
}
sort(filteredPhones.begin(), filteredPhones.end(), comparePhones);
cout << filteredPhones.size() << " mobiles are available" << endl;
for (const auto &phone : filteredPhones) {
cout << "Price " << phone.price << " Speed " << phone.speed << endl;
}
}
return 0;
}.
// SEARCH FILTER TRY :) โ