From 64e15fc98674708c6c66e500d5ddab7728fbdeb9 Mon Sep 17 00:00:00 2001 From: github_sagarsingla14 Date: Wed, 16 Oct 2019 02:00:54 +0530 Subject: [PATCH 1/3] PairSumCode --- pairsum2.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 pairsum2.cpp diff --git a/pairsum2.cpp b/pairsum2.cpp new file mode 100644 index 0000000..a71ea3c --- /dev/null +++ b/pairsum2.cpp @@ -0,0 +1,45 @@ +#include +#define ll long long +using namespace std; +int main(){ + ll t; + cin t; + cin>>t; + while(t--){ + ll n,q; + cin>>n>>q; + ll arr[n-1] = {0}; + for(ll i=0;i>arr[i]; + } + while(q--){ + ll a,b; + ll diff = abs(a - b); + if(diff%2 == 1){ + ll mx = max(a,b); + ll mn = min(a,b); + mx--; + mn--; + cout< Date: Wed, 16 Oct 2019 02:04:20 +0530 Subject: [PATCH 2/3] Octaober Challenge 6th qstn div 2 --- oct-6.cpp | 303 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 303 insertions(+) create mode 100644 oct-6.cpp diff --git a/oct-6.cpp b/oct-6.cpp new file mode 100644 index 0000000..93a13ba --- /dev/null +++ b/oct-6.cpp @@ -0,0 +1,303 @@ +#include +#define ll long long int +using namespace std; + +ll maxDigit(string s) { + ll mx = 0; + for(ll i = 0 ; i < s.size() ; i++) { + if(s[i] >= '0' && s[i] <= '9') { + ll v = s[i] - 48; + mx = max(mx , v); + } + else{ + ll v = s[i] - 55; + mx = max(mx , v); + } + } + return mx; +} + +ll calcnz (string s , ll b) { + ll digit = 0; + ll ans = 0; + ll po = s.size() - 1; + ll j = 0; + for(ll i = po; i >= 0; i--) { + if(s[i] >= '0' && s[i] <='9') { + digit = s[i] - 48; + } + else{ + digit = s[i] - 65 + 10; + } + + ll p = pow(b , j); + j++; + ans += (p * digit); + } + return ans; +} + +ll calc (string s , ll b , ll start) { + if(b < start) { + return -1; + } + + ll digit = 0; + ll ans = 0; + ll po = s.size() - 1; + ll j = 0; + + for(ll i = po; i >= 0; i--) { + if(s[i] >= '0' && s[i] <= '9') { + digit = s[i] - 48; + } + else{ + digit = s[i] - 55; + } + + ll p = pow(b , j); + if(p < 0) { + return -1; + } + j++; + ans += (p * digit); + if(ans > 1000000000000) { + return -1; + } + } + if(ans < 0) { + return -1; + } + return ans; +} + +int main(){ + ll t; + cin >> t; + while(t--) { + ll n; + cin >> n; + ll temp = n; + vector< pair > v; + while (temp--) { + ll base; + string str; + cin >> base >> str; + v.push_back(make_pair(base , str)); + } + + ll sze = v.size(); + ll flag = 0; + + vector < pair > non_zero; + + for (ll i = 0 ; i < sze; i++) { + if(v[i].first != -1) { + flag = 1; + non_zero.push_back(make_pair(v[i].first , v[i].second)); + } + } + + ll ans = 0; + + + vector values; + if(non_zero.size()) { + for(ll i = 0; i < non_zero.size() ; i++) { + ll inter = calcnz(non_zero[i].second , non_zero[i].first); + values.push_back(inter); + } + } + + + if(values.size() > 1) { + ll real = 0; + for(ll i = 1 ; i < values.size() ; i++) { + if(values[i] != values[i-1]) { + real = 1; + } + } + if(real) { + cout << -1 << endl; + continue; + } + else{ + ans = values[0]; + } + } + else{ + if(values.size()) { + ans = values[0]; + } + } + + if(flag) { + ll arr[n][37]; + for(ll i = 0; i < n ; i++){ + for(ll j = 0 ; j < 37 ; j++) { + arr[i][j] = 0; + } + } + + for(ll i = 0 ; i < n ; i++) { + ll start = maxDigit(v[i].second) + 1; + for(ll j = 2 ; j <= 36 ; j++ ) { + ll store = 0; + + string str = v[i].second; + + store = calc (str , j , start); + arr[i][j] = store; + store = 0; + } + } + + + ll breaker = 0; + ll finalstatus = 0; + for (ll i = 0; i < n ; i++) { + breaker = 0; + for (ll j = 2 ; j <= 36 ; j++) { + if(ans == arr[i][j]) { + breaker = 1; + break; + } + } + if(breaker == 1) { + continue; + } + else{ + finalstatus = 1; + break; + } + } + + if(finalstatus) { + cout << -1 << endl; + } + else{ + cout << ans << endl; + } + } + else { + ll arr[n][37]; + for(ll i = 0; i < n ; i++){ + for(ll j = 0 ; j < 37 ; j++) { + arr[i][j] = 0; + } + } + + for(ll i = 0 ; i < n ; i++) { + ll start = maxDigit(v[i].second) + 1; + for(ll j = 2 ; j <= 36 ; j++) { + ll store = 0; + + string str = v[i].second; + + store = calc(str , j , start); + arr[i][j] = store; + + store = 0; + } + } + + // for(ll i = 0; i < n ; i++){ + // for(ll j = 2 ; j <= 36 ; j++) { + // cout << arr[i][j] << " "; + // } + // cout< x; + unordered_map final; + unordered_map :: iterator itr; + + for(ll i = 2 ; i < 37 ; i++) { + if(arr[0][i] != -1) { + x[arr[0][i]] = 1; + } + } + + if(x.size() == 0) { + cout<< -1 < first] = 1; + } + final.clear(); + } + + + if(flag) { + cout << -1 << endl; + continue; + } + + ll mn = 1000000000000; + map mp; + for(itr = x.begin() ; itr != x.end() ; itr++) { + ll v = itr -> first; + if(mn > v) { + mn = v; + } + mp[v] = 1; + } + // cout << mn << endl ; + map :: iterator it; + for(it = mp.begin() ; it != mp.end() ; it++) { + cout << it -> first << endl; + break; + } + } + } + return 0; +} + + + + +// string s = v[index].second; +// ll b = v[index].first; +// +// ans = calc (s , b , 0); + +// if(ans == -1) { +// cout << -1 < Date: Wed, 16 Oct 2019 02:06:38 +0530 Subject: [PATCH 3/3] Octaober Challenge 8th qstn div 2 --- 8th.cpp | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 8th.cpp diff --git a/8th.cpp b/8th.cpp new file mode 100644 index 0000000..a544986 --- /dev/null +++ b/8th.cpp @@ -0,0 +1,197 @@ +#include +#define ll long long +using namespace std; + +unordered_map > > up; +unordered_map > t; +unordered_map > qu; +unordered_map ans; +unordered_map s; +vector ansindex; +ll mxh; +ll heights[500001]; +ll visited[500001]; +ll leafsize; +ll st[999999]; + +void update_ST(ll val , ll x){ + for(x += leafsize; x > 0; x >>= 1 ){ + st[x] += val; + } +} + +ll qST(ll x){ + ll ans=0; + ll lss=leafsize; + + for(x += leafsize + 1; lss < x; x >>= 1 , lss >>= 1){ + if(x&1){ + ans = ans + st[--x]; + } + if(lss&1) { + ans = ans + st[lss++]; + } + } + + ll temp = 1; + if(temp) { + return ans; + } +} + +void dfs(ll node){ + + ll val, ind; + visited[node] = 1; + bool is_leaf = true; + + vector child; + + if(t.find(node) != t.end()){ + for(auto currentnode : t[node]){ + if(visited[currentnode] == 0){ + child.push_back(currentnode); + } + } + } + + if(child.size() > 0) { + is_leaf = false; + } + + if(up.find(node)!=up.end()){ + for(auto check: up[node]){ + s[check.first] += check.second; + ll currentlevel = check.first + mxh+1; + update_ST(check.second , currentlevel); + } + } + + if(qu.find(node) != qu.end()){ + for(ll i = 0 ; i < 100 ; i++) { + ll x = 1; + } + for(auto index: qu[node]){ + if(!is_leaf){ + if(s.find(index - heights[node]) != s.end()){ + ans[index] = s[index-heights[node]]; + } + else{ + ans[index]=0; + } + } + else{ + ans[index] = qST(index+mxh-heights[node]+1); + } + } + } + + + + for(auto x: child){ + if(visited[x] == 0){ + dfs(x); + } + } + + if(up.find(node)!=up.end()){ + for(auto x: up[node]){ + ll f = x.first; + ll se = x.second; + s[f] -= se; + ll currentlevel = f; + currentlevel += mxh; + currentlevel++; + update_ST(-se , currentlevel); + } + } + +} + +void ch(ll node, ll i){ + + mxh = max(mxh , i); + heights[node] = i; + + visited[node] = 1; + + if(t.find(node) != t.end()){ + for(auto nnode: t[node]){ + if(visited[nnode] != 1){ + ch(nnode , i+1); + } + } + } + +} + +int main() +{ + + ll n , q; + cin >> n >> q; + ll temp = n; + temp --; + + for(ll i = 1 ; i <= n; i++) { + heights[i] = 0; + visited[i] = 0; + } + + while(temp--) { + ll u, v; + cin >> u >> v; + t[u].push_back(v); + t[v].push_back(u); + } + + + ch(1, 0); + + for(ll i=1; i<=n; i++){ + ll val; + cin >> val; + temp = heights[i]; + up[i].push_back(make_pair( - temp - 1, val)); + } + + temp = q; + ll i = 0; + while(temp --) { + string str; + cin>>str; + if(str[0] == '?'){ + ll node; + cin >> node; + ansindex.push_back(i); + qu[node].push_back(i); + } + else{ + ll node = 0 , val = 0; + cin >> node >> val; + up[node].push_back(make_pair(i - heights[node] , val)); + } + i++; + } + // + // for(ll i = 0 ; i <= n ; i++) { + // visited[i] = 0; + // } + + leafsize = q; + leafsize += mxh; + leafsize ++; + // st[2*leafsize]; + + for(ll i = 1 ; i <= 2 * leafsize ; i++) { + st[i] = 0; + } + + dfs(1); + + for(ll i = 0; i < ansindex.size() ; i++){ + cout << ans[ansindex[i]] << endl; + } + + return 0; +}