s = [0]
def mapper(b):
num_dict = {0: 1, 1: 2, 2: 0}
return num_dict[b]
class tmap:
def __init__(self, fun, s):
self.fun = fun
self.list = s
self.cachedlen = len(self.list)
def __getitem__(self, i):
return self.fun(self.list[i])
def __len__(self):
return self.cachedlen
class concat:
def __init__(self, s1):
self.s1 = s1
self.s2 = tmap(mapper, self.s1)
self.cachedlen = len(s1) * 2
def __getitem__(self, i):
if i < len(self.s1):
return self.s1[i]
else:
return self.s2[i - len(self.s1)]
def __len__(self):
return self.cachedlen
for i in range(30):
s = concat(s)
# Use s[n] to obtain the n-th number in the sequence
print(len(s))
Who have Uber, Sprinklr, DE Shaw exam guys?
Send questions here solutions will be provide
Send questions here solutions will be provide
๐3
def solve(N, M, A):
from functools import lru_cache
import sys
@lru_cache(None)
def dp(mask):
if mask == 0:
return 0
res = sys.maxsize
for i in range(N):
if mask & (1 << i):
for j in range(M):
res = min(res, A[i][j] | dp(mask ^ (1 << i)))
return res
full_mask = (1 << N) - 1
return dp(full_mask)
# Input reading
if name == "main":
import sys
input = sys.stdin.read
data = input().split()
N = int(data[0])
M = int(data[1])
A = []
idx = 2
for i in range(N):
A.append(list(map(int, data[idx:idx + M])))
idx += M
print(solve(N, M, A))
Minimum possible sum โ
from functools import lru_cache
import sys
@lru_cache(None)
def dp(mask):
if mask == 0:
return 0
res = sys.maxsize
for i in range(N):
if mask & (1 << i):
for j in range(M):
res = min(res, A[i][j] | dp(mask ^ (1 << i)))
return res
full_mask = (1 << N) - 1
return dp(full_mask)
# Input reading
if name == "main":
import sys
input = sys.stdin.read
data = input().split()
N = int(data[0])
M = int(data[1])
A = []
idx = 2
for i in range(N):
A.append(list(map(int, data[idx:idx + M])))
idx += M
print(solve(N, M, A))
Minimum possible sum โ
#include <bits/stdc++.h>
using namespace std;
#define int long long
int solve(string s){
unordered_map<char, vector<int>> mp;
for(int i=0;i<s.size();i++){
mp[s[i]].push_back(i);
}
int first=0;
int last=0;
int ans=0;
for(int i=0;i<s.size();i++){
// cout<<first<<" "<<last<<endl;
if((mp[s[i]][mp[s[i]].size()-1])>=last){
if(mp[s[i]][0]>first && mp[s[i]][0]>last){
int temp=last-first+1;
first=mp[s[i]][0];
last=mp[s[i]][mp[s[i]].size()-1];
ans+=temp*temp;
}
else{
last=mp[s[i]][mp[s[i]].size()-1];
}
}
}
int temp=last-first+1;
ans+=(temp)*temp;
return ans;
}
int32_t main() {
string s;
cin >> s;
int ans=solve(s);
cout << ans << endl;
return 0;
}.
SLICE MASTER
Sprinklr โ
using namespace std;
#define int long long
int solve(string s){
unordered_map<char, vector<int>> mp;
for(int i=0;i<s.size();i++){
mp[s[i]].push_back(i);
}
int first=0;
int last=0;
int ans=0;
for(int i=0;i<s.size();i++){
// cout<<first<<" "<<last<<endl;
if((mp[s[i]][mp[s[i]].size()-1])>=last){
if(mp[s[i]][0]>first && mp[s[i]][0]>last){
int temp=last-first+1;
first=mp[s[i]][0];
last=mp[s[i]][mp[s[i]].size()-1];
ans+=temp*temp;
}
else{
last=mp[s[i]][mp[s[i]].size()-1];
}
}
}
int temp=last-first+1;
ans+=(temp)*temp;
return ans;
}
int32_t main() {
string s;
cin >> s;
int ans=solve(s);
cout << ans << endl;
return 0;
}.
SLICE MASTER
Sprinklr โ
๐2
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
class DisjointSet {
vector<int>rank, parent, size;
public:
DisjointSet(int n) {
rank.resize(n + 1, 0);
parent.resize(n + 1);
size.resize(n + 1, 1);
for (int i = 0; i <= n; i++) {
parent[i] = i;
}
}
int findUPar(int node) {
if (node == parent[node])
return node;
return parent[node] = findUPar(parent[node]);
}
void unionBySize(int u, int v) {
int ulp_u = findUPar(u);
int ulp_v = findUPar(v);
if (ulp_u == ulp_v)return;
if (size[ulp_u] < size[ulp_v]) {
parent[ulp_u] = ulp_v;
size[ulp_v] += size[ulp_u];
}
else {
parent[ulp_v] = ulp_u;
size[ulp_u] += size[ulp_v];
}
}
};
int solve(vector<string>& v) {
int n = v.size();
DisjointSet ds(n);
vector<int>prev(26, -1);
for (int i = 0; i < n; ++i)
{
for (auto it : v[i]) {
if (prev[it - 'a'] == i)continue;
if (prev[it - 'a'] != -1)
ds.unionBySize(i, prev[it - 'a']);
prev[it - 'a'] = i;
}
}
set<int>st;
for (int i = 0; i < n; ++i)
{
int val = ds.findUPar(i);
st.insert(val);
}
int res = st.size();
return res;
}.
UBER OTPโ
vector<int>rank, parent, size;
public:
DisjointSet(int n) {
rank.resize(n + 1, 0);
parent.resize(n + 1);
size.resize(n + 1, 1);
for (int i = 0; i <= n; i++) {
parent[i] = i;
}
}
int findUPar(int node) {
if (node == parent[node])
return node;
return parent[node] = findUPar(parent[node]);
}
void unionBySize(int u, int v) {
int ulp_u = findUPar(u);
int ulp_v = findUPar(v);
if (ulp_u == ulp_v)return;
if (size[ulp_u] < size[ulp_v]) {
parent[ulp_u] = ulp_v;
size[ulp_v] += size[ulp_u];
}
else {
parent[ulp_v] = ulp_u;
size[ulp_u] += size[ulp_v];
}
}
};
int solve(vector<string>& v) {
int n = v.size();
DisjointSet ds(n);
vector<int>prev(26, -1);
for (int i = 0; i < n; ++i)
{
for (auto it : v[i]) {
if (prev[it - 'a'] == i)continue;
if (prev[it - 'a'] != -1)
ds.unionBySize(i, prev[it - 'a']);
prev[it - 'a'] = i;
}
}
set<int>st;
for (int i = 0; i < n; ++i)
{
int val = ds.findUPar(i);
st.insert(val);
}
int res = st.size();
return res;
}.
UBER OTPโ
๐2
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <iostream>
#include <vector>
using namespace std;
class FenwickTree {
private:
vector<long long> tree;
int n;
public:
FenwickTree(int size) : n(size), tree(size + 1, 0) {}
void update(int index, int value) {
while (index <= n) {
tree[index] += value;
index += index & -index;
}
}
long long query(int index) {
long long sum = 0;
while (index > 0) {
sum += tree[index];
index -= index & -index;
}
return sum;
}
};
int main() {
int N;
cin >> N;
vector<int> marks(N + 1);
FenwickTree fenwickTree(N);
for (int i = 1; i <= N; ++i) {
cin >> marks[i];
fenwickTree.update(i, marks[i]);
}
int Q;
cin >> Q;
for (int i = 0; i < Q; ++i) {
int type;
cin >> type;
if (type == 1) {
int X, Y;
cin >> X >> Y;
int diff = Y - marks[X];
marks[X] = Y;
fenwickTree.update(X, diff);
} else if (type == 2) {
int K;
cin >> K;
cout << fenwickTree.query(K) << endl;
}
}
return 0;
}
#include <vector>
using namespace std;
class FenwickTree {
private:
vector<long long> tree;
int n;
public:
FenwickTree(int size) : n(size), tree(size + 1, 0) {}
void update(int index, int value) {
while (index <= n) {
tree[index] += value;
index += index & -index;
}
}
long long query(int index) {
long long sum = 0;
while (index > 0) {
sum += tree[index];
index -= index & -index;
}
return sum;
}
};
int main() {
int N;
cin >> N;
vector<int> marks(N + 1);
FenwickTree fenwickTree(N);
for (int i = 1; i <= N; ++i) {
cin >> marks[i];
fenwickTree.update(i, marks[i]);
}
int Q;
cin >> Q;
for (int i = 0; i < Q; ++i) {
int type;
cin >> type;
if (type == 1) {
int X, Y;
cin >> X >> Y;
int diff = Y - marks[X];
marks[X] = Y;
fenwickTree.update(X, diff);
} else if (type == 2) {
int K;
cin >> K;
cout << fenwickTree.query(K) << endl;
}
}
return 0;
}
๐2
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int helper(vector<vector<int>>& grid, int N, int M) {
vector<vector<pair<int, bool>>> dp(N, vector<pair<int, bool>>(M, {0, false}));
dp[0][0] = {grid[0][0], (grid[0][0] == 2 || grid[0][0] == -3)};
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
if (i == 0 && j == 0) continue;
int max = -1;
bool has = false;
if (i > 0) {
int val = dp[i-1][j].first + grid[i][j];
bool special = dp[i-1][j].second(grid[i][j] == 2 grid[i][j] == -3);
if (val > max) {
max = val;
has = special;
}
}
if (j > 0) {
int val = dp[i][j-1].first + grid[i][j];
bool special = dp[i][j-1].second(grid[i][j] == 2 grid[i][j] == -3);
if (val > max) {
max = val;
has = special;
}
}
dp[i][j] = {max, has};
}
}
int result = dp[N-1][M-1].second ? dp[N-1][M-1].first : 0;
return result - (dp[N-1][M-1].second ? (grid[N-1][M-1] == 2 || grid[N-1][M-1] == -3 ? grid[N-1][M-1] : 0) : 0);
}
int main() {
int N, M;
cin >> N >> M;
vector<vector<int>> grid(N, vector<int>(M));
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
cin >> grid[i][j];
}
}
int result = helper(grid, N, M);
cout << result << endl;
return 0;
}
Space explorerโ
#include <vector>
#include <algorithm>
using namespace std;
int helper(vector<vector<int>>& grid, int N, int M) {
vector<vector<pair<int, bool>>> dp(N, vector<pair<int, bool>>(M, {0, false}));
dp[0][0] = {grid[0][0], (grid[0][0] == 2 || grid[0][0] == -3)};
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
if (i == 0 && j == 0) continue;
int max = -1;
bool has = false;
if (i > 0) {
int val = dp[i-1][j].first + grid[i][j];
bool special = dp[i-1][j].second
if (val > max) {
max = val;
has = special;
}
}
if (j > 0) {
int val = dp[i][j-1].first + grid[i][j];
bool special = dp[i][j-1].second
if (val > max) {
max = val;
has = special;
}
}
dp[i][j] = {max, has};
}
}
int result = dp[N-1][M-1].second ? dp[N-1][M-1].first : 0;
return result - (dp[N-1][M-1].second ? (grid[N-1][M-1] == 2 || grid[N-1][M-1] == -3 ? grid[N-1][M-1] : 0) : 0);
}
int main() {
int N, M;
cin >> N >> M;
vector<vector<int>> grid(N, vector<int>(M));
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
cin >> grid[i][j];
}
}
int result = helper(grid, N, M);
cout << result << endl;
return 0;
}
Space explorerโ
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[][] S = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
S[i][j] = scanner.nextInt();
}
}
long[] dp = new long[1 << N];
for (int mask = 0; mask < (1 << N); mask++) {
for (int i = 0; i < N; i++) {
if ((mask & (1 << i)) != 0) {
for (int j = i + 1; j < N; j++) {
if ((mask & (1 << j)) != 0) {
dp[mask] += S[i][j];
}
}
}
}
}
long result = 0;
for (int mask = 0; mask < (1 << N); mask++) {
result = Math.max(result, dp[mask]);
}
}
}
Uber โ
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[][] S = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
S[i][j] = scanner.nextInt();
}
}
long[] dp = new long[1 << N];
for (int mask = 0; mask < (1 << N); mask++) {
for (int i = 0; i < N; i++) {
if ((mask & (1 << i)) != 0) {
for (int j = i + 1; j < N; j++) {
if ((mask & (1 << j)) != 0) {
dp[mask] += S[i][j];
}
}
}
}
}
long result = 0;
for (int mask = 0; mask < (1 << N); mask++) {
result = Math.max(result, dp[mask]);
}
}
}
Uber โ
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve(){
int n;
cin>>n;
vector<int> a(n);
for(int i=0;i<n;i++) cin>>a[i];
vector<int> b(n);
for(int i=0;i<n;i++) cin>>b[i];
int ans=0;
int last=b[0];
int cost=a[0];
for(int i=1;i<n;i++){
if(a[i]>=cost)
{
last+=b[i];
}
else{
ans+=last*cost;
last=b[i];
cost=a[i];
}
}
ans+=last*cost;
cout<<ans<<endl;
}
int32_t main() {
int t;
cin>>t;
while(t--)
solve();
return 0;
}.
/// Mimimum Cost
sprinklrโ
using namespace std;
#define int long long
void solve(){
int n;
cin>>n;
vector<int> a(n);
for(int i=0;i<n;i++) cin>>a[i];
vector<int> b(n);
for(int i=0;i<n;i++) cin>>b[i];
int ans=0;
int last=b[0];
int cost=a[0];
for(int i=1;i<n;i++){
if(a[i]>=cost)
{
last+=b[i];
}
else{
ans+=last*cost;
last=b[i];
cost=a[i];
}
}
ans+=last*cost;
cout<<ans<<endl;
}
int32_t main() {
int t;
cin>>t;
while(t--)
solve();
return 0;
}.
/// Mimimum Cost
sprinklrโ
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int maxSupplies(vector<int>& costs, int credits) {
sort(costs.begin(), costs.end());
long count = 0;
for (int cost : costs) {
if (credits >= cost) {
credits -= cost;
count++;
} else {
break;
}
}
return count;
}.
// SALESFORCE
SAVING THE GALAXYโ
#include <vector>
#include <algorithm>
using namespace std;
int maxSupplies(vector<int>& costs, int credits) {
sort(costs.begin(), costs.end());
long count = 0;
for (int cost : costs) {
if (credits >= cost) {
credits -= cost;
count++;
} else {
break;
}
}
return count;
}.
// SALESFORCE
SAVING THE GALAXYโ
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
#include <iostream> #include <vector> #include <algorithm> using namespace std; int maxSupplies(vector<int>& costs, int credits) { sort(costs.begin(), costs.end()); long count = 0; for (int cost : costs) { if (credits >= cost) { โฆ
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool helper(const vector<int>& prices, int k, int minDiff) {
int count = 1;
int last = prices[0];
for (int i = 1; i < prices.size(); ++i) {
if (prices[i] - last >= minDiff) {
count++;
last = prices[i];
if (count >= k)
return true;
}
}
return false;
}
int solve(vector<int>& prices, int k) {
sort(prices.begin(), prices.end());
int left = 1;
int right = prices.back() - prices.front();
int result = 0;
while (left <= right) {
int mid = left + (right - left) / 2;
if (helper(prices, k, mid)) {
result = mid;
left = mid + 1;
} else {
right = mid - 1;
}
}
return result;
}
SALESFORCE
MAXIMUM VALUE AND MINIMUM DIffโ
#include <vector>
#include <algorithm>
using namespace std;
bool helper(const vector<int>& prices, int k, int minDiff) {
int count = 1;
int last = prices[0];
for (int i = 1; i < prices.size(); ++i) {
if (prices[i] - last >= minDiff) {
count++;
last = prices[i];
if (count >= k)
return true;
}
}
return false;
}
int solve(vector<int>& prices, int k) {
sort(prices.begin(), prices.end());
int left = 1;
int right = prices.back() - prices.front();
int result = 0;
while (left <= right) {
int mid = left + (right - left) / 2;
if (helper(prices, k, mid)) {
result = mid;
left = mid + 1;
} else {
right = mid - 1;
}
}
return result;
}
SALESFORCE
MAXIMUM VALUE AND MINIMUM DIffโ
๐1