Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions Global Round 11/ab.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define ff first
#define ss second
#define endl '\n'
#define mod 1000000007
#define pi 3.14159265358979323846

int bin(int x, int n){
int res = 1; x %= mod;
while(n){
if(n&1) res = (res*x) % mod;
x = (x*x) % mod;
n >>= 1;
}
return res;
}

void solve(){

}

signed main(){
fast
int t = 1;
// cin >> t;
for(int i = 1; i <= t; i++){
// cout << "Case #" << i << ": ";
solve();
}
}
153 changes: 153 additions & 0 deletions Global Round 11/q.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define ff first
#define ss second
#define rep(i,a,b) for(int i = a; i < b; i++)
#define repp(i,a,b) for(int i = a; i <= b; i++)
#define endl '\n'
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define mod 998244353
#define mod_in(a) bin(a, mod - 2)
#define fact(n) rep(i, 1, n+1) ft.pb((ft[i-1] * i) % mod)
#define ncr(n, r) (n >= r ? ((ft[n] * mod_in((ft[r] * ft[(n)-(r)]) % mod)) % mod) : 0LL)
#define pi 3.14159265358979323
#define INF 1e15
#define lb(v, a) lower_bound(v.begin(), v.end(), a)
#define ub(v, a) upper_bound(v.begin(), v.end(), a)
#define deb(x) cerr<<#x<<" "<<x<<endl;

// Ordered Set
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
// template<typename T>
// using ordered_set = tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
// template<typename T>
// using ordered_multiset = tree<T,null_type,less_equal<T>,rb_tree_tag,tree_order_statistics_node_update>;
// #define os_find(k) find_by_order(k)
// #define os_order(k) order_of_key(k)
// //(**FOR USING ORDERED SET CHANGE INT**)


int power(int x, int n){
int res=1;
while(n>0){
if(n&1)
res=res*x;
x*=x;
n>>=1;
}
return res;
}

int bin(int x, int n){
int res=1; x%=mod;
while(n){
if(n&1) res=(res*x)%mod;
x=(x*x)%mod;
n>>=1;
}
return res;
}

bool prime(int n){
if(n==3)return 1;
repp(i,2,sqrt(n)){
if(n%i==0)return 0;
}
return 1;
}

//DSU
void make_set(int u){
par[u] = u;
sz[u] = 1;
}

int find_set(int u){
if(u == par[u]) return u;
return par[u] = find_set(par[u]);
}

void union_set(int u, int v){
int a = find_set(u);
int b = find_set(v);
if(a == b) return;
if(sz[a] < sz[b]) swap(a, b);
par[b] = a;
sz[a] += sz[b];
}

// Sieve
vector<int> pr(1000005, 1);

void sieve(int n){
pr[1] = 0; pr[0] = 0;
for(int p = 2; p <= n; p++){
if(pr[p] == 1){
for(int i = p * p; i <= n; i += p){
pr[i] = 0;
}
}
}
}

int arr[200001], p[200001], h[200001], ans[200001], val[200001];
int dp[200001][100];
vector<int> adj[200001];

void dfs(int n, int l, int p){
h[n] = l;
dp[n][0] = p;
for(auto i : adj[n]){
if(i != p){
dfs(i, l + 1, n);
}
}
}

void lca1(int n, int k){
repp(i, 1, k){
rep(j, 2, n + 1){
if(dp[j][i-1] != -1) dp[j][i] = dp[dp[j][i-1]][i-1];
}
}
}

int lca(int x, int y, int k){
if(h[x] > h[y]) swap(x, y);
int d = h[y] - h[x];
while(d){
int f = log2(d);
y = dp[y][f];
d -= (1 << f);
}
if(y == x) return y;
for(int i = k; i >= 0; i--){
if(dp[x][i] != -1 && (dp[x][i] != dp[y][i])) x = dp[x][i], y = dp[y][i];
}
return dp[x][0];
}

void solve(){
int n, q, c = 0;; cin >> n >> q;
memset(dp, -1, sizeof(dp));
rep(i, 0, n - 1){
int x, y; cin >> x >> y;
adj[x].pb(y);
adj[y].pb(x);
}
dfs(1, 0, -1);
int k = log2(n);
lca1(n, k);
while(q--){
int x, y; cin >> x >> y;
int node = lca(x, y, k);
if(node == x or node == y) cout << abs(h[x] - h[y]) << endl;
else cout << h[x] + h[y] - 2 * h[node] << endl;
}
}
35 changes: 35 additions & 0 deletions ab.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define ff first
#define ss second
#define endl '\n'
#define mod 1000000007
#define pi 3.14159265358979323846

int bin(int x, int n){
int res = 1; x %= mod;
while(n){
if(n&1) res = (res*x) % mod;
x = (x*x) % mod;
n >>= 1;
}
return res;
}

void solve(){

}

signed main(){
fast
int t = 1;
// cin >> t;
for(int i = 1; i <= t; i++){
// cout << "Case #" << i << ": ";
solve();
}
}
44 changes: 44 additions & 0 deletions abc.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
//////////////////////////////////////////////////////
// .-. //
// |_:_| //
// /(_Y_)\ //
//. ( \/M\/ ) //
// '. _.'-/'-'\-'._ //
// ': _/.--'[[[[]'--.\_ //
// ': /_' : |::"| : '.\ //
// ': // ./ |oUU| \.' :\ //
// ': _:'..' \_|___|_/ : :| //
// ':. .' |_[___]_| :.':\ //
// [::\ | : | | : ; : \ //
// '-' \/'.| |.' \ .;.' | //
// |\_ \ '-' : | //
// | \ \ .: : | | //
// | \ | '. : \ | //
// / \ :. .; | //
// / | | :__/ : \\ //
// | | | \: | \ | || //
// / \ : : |: / |__| /| //
// | : : :_/_| /'._\ '--|_\ //
// /___.-/_|-' \ \ //
// '-' //
//////////////////////////////////////////////////////


#include <bits/stdc++.h>

using namespace std;

#define int long long
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define ff first
#define ss second
#define rep(i,a,b) for(int i=a;i<b;i++)
#define repp(i,a,b) for(int i=a;i<=b;i++)
#define endl '\n'


signed main(){
fast

}
89 changes: 89 additions & 0 deletions b.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define ff first
#define ss second
#define endl '\n'
#define mod 1000000007

int bin(int x, int n){
int res=1; x%=mod;
while(n){
if(n&1) res=(res*x)%mod;
x=(x*x)%mod;
n>>=1;
}
return res;
}

int dp[19][2][75][2];

vector<int> v;
int k;

int fun(int ind, int f, int p, int sum, int f1){
if(p > k) return 0;
if(ind == v.size()){return 1;}
if(dp[ind][f][sum][f1] != -1) return dp[ind][f][sum][f1];
int ans = 0;
if(f == 0){
if(f1){
for(int i = 0; i < v[ind]; i++){
ans += fun(ind + 1, 1, p * i, sum + i, 1);
}
ans += fun(ind + 1, 0, p * v[ind], sum + v[ind], 1);
}
else{
for(int idx = 0; idx < v[ind]; idx++){
if(idx == 0){
ans += fun(ind + 1, 1, 1, sum + idx, 0);
}
else ans += fun(ind + 1, 1, p * idx, sum + idx, 1);
}
if(v[ind] != 0) ans += fun(ind + 1, 0, p * v[ind], sum + v[ind], 1);
else ans += fun(ind + 1, 0, 1, sum + v[ind], 0);
}
}
else{
if(f1){
for(int i = 0; i <= 9; i++){
ans += fun(ind + 1, 1, p * i, sum + i, 1);
}
}
else{
for(int i = 0; i <= 9; i++){
if(i == 0){
ans += fun(ind + 1, 1, 1, sum + i, 0);
}
else ans += fun(ind + 1, 1, p * i, sum + i, 1);
}
if(v[ind]) ans += fun(ind + 1, 1, p * v[ind], sum + v[ind], 1);
else (ans += fun(ind + 1, 1, 1, sum + v[ind], 0));
}
}
return dp[ind][f][sum][f1] = ans;
}

void solve(){
int n; cin >> n >> k;
memset(dp, -1, sizeof(dp));
int t = n;
while(t){
v.pb(t % 10);
t /= 10;
}
reverse(v.begin(), v.end());
cout << fun(0, 0, 1, 0, 0) - 1;
}

signed main(){
fast
int t = 1;
// cin >> t;
for(int i = 1; i <= t; i++){
solve();
}
}
Loading