๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
List<Integer> results = new ArrayList<>();
int counter = 1;
Map<Integer, Integer> allocationMap = new HashMap<>();
for (int[] query : queries) {
if (query[0] == 0) {
int length = query[1];
int result = -1;
for (int i = 0; i <= memory.length - length; i++) {
boolean canAllocate = true;
for (int j = 0; j < length; j++) {
if (memory[i + j] != 0) {
canAllocate = false;
break;
}
}
if (canAllocate) {
for (int j = 0; j < length; j++) {
memory[i + j] = counter;
}
allocationMap.put(counter, length);
result = counter++;
break;
}
}
results.add(result);
} else if (query[0] == 1) {
int id = query[1];
if (!allocationMap.containsKey(id)) {
results.add(-1);
continue;
}
int length = allocationMap.get(id);
boolean erased = false;
for (int i = 0; i < memory.length; i++) {
if (memory[i] == id) {
for (int j = 0; j < length; j++) {
memory[i + j] = 0;
}
allocationMap.remove(id);
results.add(length);
erased = true;
break;
}
}
if (!erased) {
results.add(-1);
}
}
}
int[] resultArray = new int[results.size()];
for (int i = 0; i < results.size(); i++) {
resultArray[i] = results.get(i);
}
return resultArray;
}
int counter = 1;
Map<Integer, Integer> allocationMap = new HashMap<>();
for (int[] query : queries) {
if (query[0] == 0) {
int length = query[1];
int result = -1;
for (int i = 0; i <= memory.length - length; i++) {
boolean canAllocate = true;
for (int j = 0; j < length; j++) {
if (memory[i + j] != 0) {
canAllocate = false;
break;
}
}
if (canAllocate) {
for (int j = 0; j < length; j++) {
memory[i + j] = counter;
}
allocationMap.put(counter, length);
result = counter++;
break;
}
}
results.add(result);
} else if (query[0] == 1) {
int id = query[1];
if (!allocationMap.containsKey(id)) {
results.add(-1);
continue;
}
int length = allocationMap.get(id);
boolean erased = false;
for (int i = 0; i < memory.length; i++) {
if (memory[i] == id) {
for (int j = 0; j < length; j++) {
memory[i + j] = 0;
}
allocationMap.remove(id);
results.add(length);
erased = true;
break;
}
}
if (!erased) {
results.add(-1);
}
}
}
int[] resultArray = new int[results.size()];
for (int i = 0; i < results.size(); i++) {
resultArray[i] = results.get(i);
}
return resultArray;
}
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
def find_local_maxima(matrix):
def is_local_maximum(matrix, i, j):
val = matrix[i][j]
if val == 0:
return False
for di in [-1, 0, 1]:
for dj in [-1, 0, 1]:
if di == 0 and dj == 0:
continue
ni, nj = i + di, j + dj
if 0 <= ni < len(matrix) and 0 <= nj < len(matrix[0]):
if matrix[ni][nj] >= val:
return False
return True
local_maxima = []
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if is_local_maximum(matrix, i, j):
local_maxima.append((i, j))
return local_maxima[:2]
def is_local_maximum(matrix, i, j):
val = matrix[i][j]
if val == 0:
return False
for di in [-1, 0, 1]:
for dj in [-1, 0, 1]:
if di == 0 and dj == 0:
continue
ni, nj = i + di, j + dj
if 0 <= ni < len(matrix) and 0 <= nj < len(matrix[0]):
if matrix[ni][nj] >= val:
return False
return True
local_maxima = []
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if is_local_maximum(matrix, i, j):
local_maxima.append((i, j))
return local_maxima[:2]
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
int solution(vector<int>& A, vector<int>& B) {
int n = A.size();
vector<vector<int>> graph(n + 1);
vector<bool> visited(n + 1, false);
int count = 0;
unordered_map<string, int> directions;
for (int i = 0; i < n; ++i) {
graph[A[i]].push_back(B[i]);
graph[B[i]].push_back(A[i]);
string directionKey = to_string(A[i]) + "->" + to_string(B[i]);
directions[directionKey] = 0;
}
function<void(int)> dfs = [&](int city) {
visited[city] = true;
for (int neighbor : graph[city]) {
if (visited[neighbor]) {
continue;
}
string changedDirectionKey = to_string(neighbor) + "->" + to_string(city);
if (directions.find(changedDirectionKey) == directions.end()) {
count++;
}
dfs(neighbor);
}
};
dfs(0);
return count;
}
int n = A.size();
vector<vector<int>> graph(n + 1);
vector<bool> visited(n + 1, false);
int count = 0;
unordered_map<string, int> directions;
for (int i = 0; i < n; ++i) {
graph[A[i]].push_back(B[i]);
graph[B[i]].push_back(A[i]);
string directionKey = to_string(A[i]) + "->" + to_string(B[i]);
directions[directionKey] = 0;
}
function<void(int)> dfs = [&](int city) {
visited[city] = true;
for (int neighbor : graph[city]) {
if (visited[neighbor]) {
continue;
}
string changedDirectionKey = to_string(neighbor) + "->" + to_string(city);
if (directions.find(changedDirectionKey) == directions.end()) {
count++;
}
dfs(neighbor);
}
};
dfs(0);
return count;
}
โค1
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
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