๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
vector<int> row, col;
void dfs(vector<vector<int>>& matrix, vector<vector<bool>>& visited, int x, int y)
{
int rows = matrix.size();
int cols = matrix[0].size();
visited[x][y] = true;
for (int k = 0; k < row.size(); ++k)
{
int newX = x + row[k];
int newY = y + col[k];
if (newX >= 0 && newX < rows && newY >= 0 && newY < cols && matrix[newX][newY] == 1 && !visited[newX][newY])
{
dfs(matrix, visited, newX, newY);
}
}
}
int hello(vector<vector<int>>& matrix, int adj)
{
int rows = matrix.size();
int cols = matrix[0].size();
vector<vector<bool>> visited(rows, vector<bool>(cols, false));
int count = 0;
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
if (matrix[i][j] == 1 && !visited[i][j])
{
count++;
dfs(matrix, visited, i, j);
}
}
}
return count;
}
int main() {
int adj, rows, cols;
cin >> adj;
cin >> rows >> cols;
vector<vector<int>> matrix(rows, vector<int>(cols));
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
cin >> matrix[i][j];
}
}
if (adj == 1) {
row = {0, 0};
col = {-1, 1};
} else if (adj == 2) {
row = {-1, 1};
col = {0, 0};
} else if (adj == 3) {
row = {-1, -1, 1, 1};
col = {-1, 1, -1, 1};
} else if (adj == 4) {
row = {0, 0, -1, 1};
col = {-1, 1, 0, 0};
} else if (adj == 5) {
row = {-1, -1, -1, 0, 0, 1, 1, 1};
col = {-1, 0, 1, -1, 1, -1, 0, 1};
}
int result = hello(matrix, adj);
cout << result << endl;
return 0;
}
HPC programming โ
#include <vector>
#include <queue>
using namespace std;
vector<int> row, col;
void dfs(vector<vector<int>>& matrix, vector<vector<bool>>& visited, int x, int y)
{
int rows = matrix.size();
int cols = matrix[0].size();
visited[x][y] = true;
for (int k = 0; k < row.size(); ++k)
{
int newX = x + row[k];
int newY = y + col[k];
if (newX >= 0 && newX < rows && newY >= 0 && newY < cols && matrix[newX][newY] == 1 && !visited[newX][newY])
{
dfs(matrix, visited, newX, newY);
}
}
}
int hello(vector<vector<int>>& matrix, int adj)
{
int rows = matrix.size();
int cols = matrix[0].size();
vector<vector<bool>> visited(rows, vector<bool>(cols, false));
int count = 0;
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
if (matrix[i][j] == 1 && !visited[i][j])
{
count++;
dfs(matrix, visited, i, j);
}
}
}
return count;
}
int main() {
int adj, rows, cols;
cin >> adj;
cin >> rows >> cols;
vector<vector<int>> matrix(rows, vector<int>(cols));
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
cin >> matrix[i][j];
}
}
if (adj == 1) {
row = {0, 0};
col = {-1, 1};
} else if (adj == 2) {
row = {-1, 1};
col = {0, 0};
} else if (adj == 3) {
row = {-1, -1, 1, 1};
col = {-1, 1, -1, 1};
} else if (adj == 4) {
row = {0, 0, -1, 1};
col = {-1, 1, 0, 0};
} else if (adj == 5) {
row = {-1, -1, -1, 0, 0, 1, 1, 1};
col = {-1, 0, 1, -1, 1, -1, 0, 1};
}
int result = hello(matrix, adj);
cout << result << endl;
return 0;
}
HPC programming โ
Forwarded from OffCampus Jobs | OnCampus Jobs | Daily Jobs Updates | Lastest Jobs | All Jobs | CSE Jobs | Fresher Jobs โฅ (Dushyant)
๐1
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โ