#include <iostream>
#include <vector>
#include <unordered_set>
#include <string>
using namespace std;
bool containsDislikedDigits(int number, const unordered_set<int>& dislikedDigits) {
while (number > 0) {
if (dislikedDigits.find(number % 10) != dislikedDigits.end()) {
return true;
}
number /= 10;
}
return false;
}
int solve(int N, int k, vector<int>& d) {
unordered_set<int> dislikedDigits(d.begin(), d.end());
while (containsDislikedDigits(N, dislikedDigits)) {
++N;
}
return N;
}
int main() {
int N, k;
cin >> N >> k;
vector<int> d(k);
for (int i = 0; i < k; ++i) {
cin >> d[i];
}
int result = solve(N, k, d);
cout << result << endl;
return 0;
}
//minimum amount
Increffโ
#include <vector>
#include <unordered_set>
#include <string>
using namespace std;
bool containsDislikedDigits(int number, const unordered_set<int>& dislikedDigits) {
while (number > 0) {
if (dislikedDigits.find(number % 10) != dislikedDigits.end()) {
return true;
}
number /= 10;
}
return false;
}
int solve(int N, int k, vector<int>& d) {
unordered_set<int> dislikedDigits(d.begin(), d.end());
while (containsDislikedDigits(N, dislikedDigits)) {
++N;
}
return N;
}
int main() {
int N, k;
cin >> N >> k;
vector<int> d(k);
for (int i = 0; i < k; ++i) {
cin >> d[i];
}
int result = solve(N, k, d);
cout << result << endl;
return 0;
}
//minimum amount
Increffโ
Smallest number
Increff โ
Increff โ
def maxShared(friends_nodes, friends_from, friends_to, friends_weight):
interests = {}
for i in range(len(friends_from)):
pair = tuple(sorted([friends_from[i], friends_to[i]]))
if pair not in interests:
interests[pair] = set()
interests[pair].add(friends_weight[i])
max_shared = max(len(interests[pair]) for pair in interests)
max_pairs = [pair for pair in interests if len(interests[pair]) == max_shared]
max_product = max(pair[0] * pair[1] for pair in max_pairs)
return max_product
def canAchieve(min_attention, attention, m, k):
n = len(attention)
diff = [0] * (n + 1)
current_add = 0
workshops_used = 0
for i in range(n):
current_add += diff[i]
if attention[i] + current_add < min_attention:
increment = min_attention - (attention[i] + current_add)
workshops_used += increment
if workshops_used > m:
return False
if i + k < n:
diff[i + k] -= increment
current_add += increment
return workshops_used <= m
def maximizeMinAttention(attention, m, k):
left = min(attention)
right = max(attention) + m
while left < right:
mid = (left + right + 1) // 2
if canAchieve(mid, attention, m, k):
left = mid
else:
right = mid - 1
return left
n = len(attention)
diff = [0] * (n + 1)
current_add = 0
workshops_used = 0
for i in range(n):
current_add += diff[i]
if attention[i] + current_add < min_attention:
increment = min_attention - (attention[i] + current_add)
workshops_used += increment
if workshops_used > m:
return False
if i + k < n:
diff[i + k] -= increment
current_add += increment
return workshops_used <= m
def maximizeMinAttention(attention, m, k):
left = min(attention)
right = max(attention) + m
while left < right:
mid = (left + right + 1) // 2
if canAchieve(mid, attention, m, k):
left = mid
else:
right = mid - 1
return left
โค1
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <iostream>
#include <vector>
#include <unordered_map>
#include <string>
#include <sstream>
#include <algorithm>
#include <stdexcept>
using namespace std;
struct U {
int i;
bool a;
};
struct C {
unordered_map<int, U> u;
unordered_map<int, int> m;
void p(vector<vector<string>>& e) {
for (const auto& ev : e) {
string a = ev[0];
int t = 0;
try {
t = stoi(ev[1]);
} catch (const invalid_argument& ex) {
cerr << "Invalid timestamp: " << ev[1] << endl;
continue;
}
if (a == "MESSAGE") {
string ml = ev[2];
istringstream iss(ml);
string tk;
while (iss >> tk) {
if (tk == "ALL") {
for (auto& us : u) {
m[us.first]++;
}
} else if (tk == "HERE") {
for (auto& us : u) {
if (us.second.a) {
m[us.first]++;
}
}
} else if (tk.size() >= 3) {
try {
int id = stoi(tk.substr(2));
m[id]++;
} catch (const invalid_argument& ex) {
cerr << "Invalid user ID: " << tk.substr(2) << endl;
}
}
}
} else if (a == "OFFLINE" && ev.size() >= 3) {
string idStr = ev[2].substr(2);
if (!idStr.empty()) {
try {
int id = stoi(idStr);
if (u.find(id) != u.end()) {
u[id].a = false;
m[id]--;
m[-1]--;
if (u[id].a) {
m[-2]--;
}
}
} catch (const invalid_argument& ex) {
cerr << "Invalid user ID: " << idStr << endl;
}
}
}
}
}
vector<string> g() {
vector<string> r;
for (const auto& me : m) {
if (me.first >= 0) {
r.push_back("id" + to_string(me.first) + " - " + to_string(me.second));
}
}
sort(r.begin(), r.end());
return r;
}
};
int main() {
vector<vector<string>> e = {
{"MESSAGE", "0", "ALL id158 id42"},
{"OFFLINE", "1", "id158"},
{"MESSAGE", "2", "id158 id158"},
{"OFFLINE", "3", "id23"},
{"MESSAGE", "60", "HERE id158 id42 id23"},
{"MESSAGE", "61", "HERE"}
};
C c;
c.p(e);
vector<string> r = c.g();
for (const string& s : r) {
cout << s << endl;
}
return 0;
}
#include <vector>
#include <unordered_map>
#include <string>
#include <sstream>
#include <algorithm>
#include <stdexcept>
using namespace std;
struct U {
int i;
bool a;
};
struct C {
unordered_map<int, U> u;
unordered_map<int, int> m;
void p(vector<vector<string>>& e) {
for (const auto& ev : e) {
string a = ev[0];
int t = 0;
try {
t = stoi(ev[1]);
} catch (const invalid_argument& ex) {
cerr << "Invalid timestamp: " << ev[1] << endl;
continue;
}
if (a == "MESSAGE") {
string ml = ev[2];
istringstream iss(ml);
string tk;
while (iss >> tk) {
if (tk == "ALL") {
for (auto& us : u) {
m[us.first]++;
}
} else if (tk == "HERE") {
for (auto& us : u) {
if (us.second.a) {
m[us.first]++;
}
}
} else if (tk.size() >= 3) {
try {
int id = stoi(tk.substr(2));
m[id]++;
} catch (const invalid_argument& ex) {
cerr << "Invalid user ID: " << tk.substr(2) << endl;
}
}
}
} else if (a == "OFFLINE" && ev.size() >= 3) {
string idStr = ev[2].substr(2);
if (!idStr.empty()) {
try {
int id = stoi(idStr);
if (u.find(id) != u.end()) {
u[id].a = false;
m[id]--;
m[-1]--;
if (u[id].a) {
m[-2]--;
}
}
} catch (const invalid_argument& ex) {
cerr << "Invalid user ID: " << idStr << endl;
}
}
}
}
}
vector<string> g() {
vector<string> r;
for (const auto& me : m) {
if (me.first >= 0) {
r.push_back("id" + to_string(me.first) + " - " + to_string(me.second));
}
}
sort(r.begin(), r.end());
return r;
}
};
int main() {
vector<vector<string>> e = {
{"MESSAGE", "0", "ALL id158 id42"},
{"OFFLINE", "1", "id158"},
{"MESSAGE", "2", "id158 id158"},
{"OFFLINE", "3", "id23"},
{"MESSAGE", "60", "HERE id158 id42 id23"},
{"MESSAGE", "61", "HERE"}
};
C c;
c.p(e);
vector<string> r = c.g();
for (const string& s : r) {
cout << s << endl;
}
return 0;
}
def min_cost_to_make_strongly_connected(N, tracks):
from collections import defaultdict, deque
import heapq
def kosaraju_scc(N, adj_list, rev_adj_list):
def dfs(node, adj_list, visited, stack):
visited[node] = True
for neighbor, _ in adj_list[node]:
if not visited[neighbor]:
dfs(neighbor, adj_list, visited, stack)
stack.append(node)
def reverse_dfs(node, rev_adj_list, visited, scc):
visited[node] = True
scc.append(node)
for neighbor in rev_adj_list[node]:
if not visited[neighbor]:
reverse_dfs(neighbor, rev_adj_list, visited, scc)
stack = []
visited = [False] * (N + 1)
for i in range(1, N + 1):
if not visited[i]:
dfs(i, adj_list, visited, stack)
visited = [False] * (N + 1)
sccs = []
while stack:
node = stack.pop()
if not visited[node]:
scc = []
reverse_dfs(node, rev_adj_list, visited, scc)
sccs.append(scc)
return sccs
adj_list = defaultdict(list)
rev_adj_list = defaultdict(list)
for A, B, C in tracks:
adj_list[A].append((B, C))
rev_adj_list[B].append(A)
sccs = kosaraju_scc(N, adj_list, rev_adj_list)
node_to_scc = {}
for i, scc in enumerate(sccs):
for node in scc:
node_to_scc[node] = i
component_graph = defaultdict(list)
component_cost = {}
for A, B, C in tracks:
compA = node_to_scc[A]
compB = node_to_scc[B]
if compA != compB:
if (compA, compB) not in component_cost or component_cost[(compA, compB)] > C:
component_cost[(compA, compB)] = C
pq = []
for (u, v), cost in component_cost.items():
heapq.heappush(pq, (cost, u, v))
parent = list(range(len(sccs)))
rank = [0] * len(sccs)
def find(u):
if parent[u] != u:
parent[u] = find(parent[u])
return parent[u]
def union(u, v):
root_u = find(u)
root_v = find(v)
if root_u != root_v:
if rank[root_u] > rank[root_v]:
parent[root_v] = root_u
elif rank[root_u] < rank[root_v]:
parent[root_u] = root_v
else:
parent[root_v] = root_u
rank[root_u] += 1
min_cost = 0
edges_used = 0
while pq and edges_used < len(sccs) - 1:
cost, u, v = heapq.heappop(pq)
if find(u) != find(v):
union(u, v)
min_cost += cost
edges_used += 1
return min_cost//2
Phonepe โ
from collections import defaultdict, deque
import heapq
def kosaraju_scc(N, adj_list, rev_adj_list):
def dfs(node, adj_list, visited, stack):
visited[node] = True
for neighbor, _ in adj_list[node]:
if not visited[neighbor]:
dfs(neighbor, adj_list, visited, stack)
stack.append(node)
def reverse_dfs(node, rev_adj_list, visited, scc):
visited[node] = True
scc.append(node)
for neighbor in rev_adj_list[node]:
if not visited[neighbor]:
reverse_dfs(neighbor, rev_adj_list, visited, scc)
stack = []
visited = [False] * (N + 1)
for i in range(1, N + 1):
if not visited[i]:
dfs(i, adj_list, visited, stack)
visited = [False] * (N + 1)
sccs = []
while stack:
node = stack.pop()
if not visited[node]:
scc = []
reverse_dfs(node, rev_adj_list, visited, scc)
sccs.append(scc)
return sccs
adj_list = defaultdict(list)
rev_adj_list = defaultdict(list)
for A, B, C in tracks:
adj_list[A].append((B, C))
rev_adj_list[B].append(A)
sccs = kosaraju_scc(N, adj_list, rev_adj_list)
node_to_scc = {}
for i, scc in enumerate(sccs):
for node in scc:
node_to_scc[node] = i
component_graph = defaultdict(list)
component_cost = {}
for A, B, C in tracks:
compA = node_to_scc[A]
compB = node_to_scc[B]
if compA != compB:
if (compA, compB) not in component_cost or component_cost[(compA, compB)] > C:
component_cost[(compA, compB)] = C
pq = []
for (u, v), cost in component_cost.items():
heapq.heappush(pq, (cost, u, v))
parent = list(range(len(sccs)))
rank = [0] * len(sccs)
def find(u):
if parent[u] != u:
parent[u] = find(parent[u])
return parent[u]
def union(u, v):
root_u = find(u)
root_v = find(v)
if root_u != root_v:
if rank[root_u] > rank[root_v]:
parent[root_v] = root_u
elif rank[root_u] < rank[root_v]:
parent[root_u] = root_v
else:
parent[root_v] = root_u
rank[root_u] += 1
min_cost = 0
edges_used = 0
while pq and edges_used < len(sccs) - 1:
cost, u, v = heapq.heappop(pq)
if find(u) != find(v):
union(u, v)
min_cost += cost
edges_used += 1
return min_cost//2
Phonepe โ
def reverse_substrings(word):
possible_strings = set()
for i in range(1, len(word) + 1):
reversed_prefix = word[:i][::-1] + word[i:]
possible_strings.add(reversed_prefix)
for i in range(1, len(word) + 1):
reversed_suffix = word[:-i] + word[-i:][::-1]
possible_strings.add(reversed_suffix)
return min(possible_strings)
possible_strings = set()
for i in range(1, len(word) + 1):
reversed_prefix = word[:i][::-1] + word[i:]
possible_strings.add(reversed_prefix)
for i in range(1, len(word) + 1):
reversed_suffix = word[:-i] + word[-i:][::-1]
possible_strings.add(reversed_suffix)
return min(possible_strings)
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll help(ll n,vector<vector<ll>>&v,vector<ll>&dp,ll i)
{
if(i>=n) return 0;
if(dp[i]!=-1) return dp[i];
ll t=help(n,v,dp,i+1);
ll l=i+1;
ll r=n-1;
ll res=n;
while(l<=r)
{
ll mid=(l+r)/2;
if(v[mid][0]>=v[i][1])
{
res=mid;
r=mid-1;
}
else l=mid+1;
}
ll next=res;
ll sum=v[i][2]+v[i][1]-v[i][0];
t=max(t,sum+help(n,v,dp,next));
return dp[i]=t;
}
ll solve(vector<ll>&pick,vector<ll>&drop,vector<ll>&tip)
{
ll n=pick.size();
vector<vector<ll>>rides(n);
for(ll i=0;i<n;i++)
{
rides[i]={pick[i],drop[i],tip[i]};
}
sort(rides.begin(),rides.end());
vector<ll>dp(n+10,-1);
return help(n,rides,dp,0);
}
signed main()
{
ll n; cin>>n;
vector<ll>pick(n),drop(n),tip(n);
for(ll i=0;i<n;i++) cin>>pick[i];
for(ll i=0;i<n;i++) cin>>drop[i];
for(ll i=0;i<n;i++) cin>>tip[i];
cout<<solve(pick,drop,tip);
return 0;
}
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
Photo
public static int[] teamSize(int[] talent, int talentsCount) {
int n = talent.length;
int[] result = new int[n];
Arrays.fill(result, -1);
Map<Integer, Integer> talentFreq = new HashMap<>();
int left = 0, uniqueTalents = 0;
for (int right = 0; right < n; right++) {
talentFreq.put(talent[right], talentFreq.getOrDefault(talent[right], 0) + 1);
if (talentFreq.get(talent[right]) == 1) {
uniqueTalents++;
}
while (uniqueTalents == talentsCount) {
result[left] = (result[left] == -1) ? right - left + 1 : Math.min(result[left], right - left + 1);
talentFreq.put(talent[left], talentFreq.get(talent[left]) - 1);
if (talentFreq.get(talent[left]) == 0) {
uniqueTalents--;
}
left++;
}
}
return result;
}
int n = talent.length;
int[] result = new int[n];
Arrays.fill(result, -1);
Map<Integer, Integer> talentFreq = new HashMap<>();
int left = 0, uniqueTalents = 0;
for (int right = 0; right < n; right++) {
talentFreq.put(talent[right], talentFreq.getOrDefault(talent[right], 0) + 1);
if (talentFreq.get(talent[right]) == 1) {
uniqueTalents++;
}
while (uniqueTalents == talentsCount) {
result[left] = (result[left] == -1) ? right - left + 1 : Math.min(result[left], right - left + 1);
talentFreq.put(talent[left], talentFreq.get(talent[left]) - 1);
if (talentFreq.get(talent[left]) == 0) {
uniqueTalents--;
}
left++;
}
}
return result;
}
int solve(int n, int m, int k, vector<vector<int>>& profit) {
vector<vector<int>> dp(n, vector<int>(m, 0));
for (int i = 0; i < n; i++) {
dp[i][0] = profit[i][0];
}
for (int j = 1; j < m; j++) {
vector<int> temp(n, 0);
for (int i = 0; i < n; i++) {
for (int x = max(0, i - k); x <= min(n - 1, i + k); x++) {
if (x != i) {
temp[i] = max(temp[i], dp[x][j-1]);
}
}
}
for (int i = 0; i < n; i++) {
dp[i][j] = temp[i] + profit[i][j];
}
}
int ans = 0;
for (int i = 0; i < n; i++) {
ans = max(ans, dp[i][m-1]);
}
return ans;
}
//max-profit
vector<vector<int>> dp(n, vector<int>(m, 0));
for (int i = 0; i < n; i++) {
dp[i][0] = profit[i][0];
}
for (int j = 1; j < m; j++) {
vector<int> temp(n, 0);
for (int i = 0; i < n; i++) {
for (int x = max(0, i - k); x <= min(n - 1, i + k); x++) {
if (x != i) {
temp[i] = max(temp[i], dp[x][j-1]);
}
}
}
for (int i = 0; i < n; i++) {
dp[i][j] = temp[i] + profit[i][j];
}
}
int ans = 0;
for (int i = 0; i < n; i++) {
ans = max(ans, dp[i][m-1]);
}
return ans;
}
//max-profit
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll solve(vector<vector<ll>>&a)
{
ll n=a.size();
if(a.empty()) return 0;
ll sz=0,pre;
vector<ll>cur(n);
for(ll i=0;i<n;i++)
{
for(ll j=0;j<n;j++)
{
ll temp=cur[j];
if (!i || !j || a[i][j]==0)
{
cur[j]=a[i][j];
}
else
{
cur[j]=min(pre,min(cur[j],cur[j-1]))+1;
}
sz=max(cur[j],sz);
pre=temp;
}
}
return sz;
}
signed main()
{
ll n; cin>>n;
vector<vector<ll>>a(n,vector<ll>(n));
for(ll i=0;i<n;i++)
for(ll j=0;j<n;j++) cin>>a[i][j];
cout<<solve(a);
return 0;
}
Movelsync cab compliance โ
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MOD=1e9+7;
int32_t main() {
string src;cin>>src;
string tar;cin>>tar;
int k;cin>>k;
int gw=0,bw=0;
for(int i=0;i<src.size();i++){
string temp = src.substr(i) + src.substr(0,i);
if(temp == tar) gw++;
else bw++;
}
int dp[k+1][2];
dp[0][0] = (src==tar);
dp[0][1] = !(src==tar);
for(int i=1;i<=k;i++){
dp[i][0] = ((dp[i-1][0]*(gw-1))%MOD + (dp[i-1][1]*gw)%MOD)%MOD;
dp[i][1] = ((dp[i-1][1]*(bw-1))%MOD + (dp[i-1][0]*bw)%MOD)%MOD;
}
cout<<dp[k][0];
return 0;
}
//NLP enthusiasts โ
using namespace std;
#define int long long
const int MOD=1e9+7;
int32_t main() {
string src;cin>>src;
string tar;cin>>tar;
int k;cin>>k;
int gw=0,bw=0;
for(int i=0;i<src.size();i++){
string temp = src.substr(i) + src.substr(0,i);
if(temp == tar) gw++;
else bw++;
}
int dp[k+1][2];
dp[0][0] = (src==tar);
dp[0][1] = !(src==tar);
for(int i=1;i<=k;i++){
dp[i][0] = ((dp[i-1][0]*(gw-1))%MOD + (dp[i-1][1]*gw)%MOD)%MOD;
dp[i][1] = ((dp[i-1][1]*(bw-1))%MOD + (dp[i-1][0]*bw)%MOD)%MOD;
}
cout<<dp[k][0];
return 0;
}
//NLP enthusiasts โ
๐๐ฆ ๐๐น๐ด๐ผ ๐ป ๐ ใ๐๐ผ๐บ๐ฝ๐ฒ๐๐ถ๐๐ถ๐๐ฒ ๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ดใ
#include <bits/stdc++.h> #define ll long long using namespace std; ll solve(vector<vector<ll>>&a) { ll n=a.size(); if(a.empty()) return 0; ll sz=0,pre; vector<ll>cur(n); for(ll i=0;i<n;i++) { for(ll j=0;j<n;j++) โฆ
โ
def doesCircleExist(commands):
def simulate(command):
x, y = 0, 0
dx, dy = 0, 1
for _ in range(4):
for c in command:
if c == 'G':
x += dx
y += dy
elif c == 'L':
dx, dy = -dy, dx
elif c == 'R':
dx, dy = dy, -dx
if x == 0 and y == 0:
return True
if dx == 0 and dy == 1:
return False
return False
results = []
for command in commands:
results.append("YES" if simulate(command) else "NO")
return results
Movie sync Circular route identification โ
๐1