Skip to content

Commit c628ab3

Browse files
committed
initial commit
0 parents  commit c628ab3

24 files changed

+2276
-0
lines changed

DP/LIS and Path Printing (DP-n^2).cpp

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
#include<bits/stdc++.h>
2+
#include<ext/pb_ds/assoc_container.hpp>
3+
#include<ext/pb_ds/tree_policy.hpp>
4+
#define FIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
5+
#define all(v) v.begin(),v.end()
6+
#define rall(v) v.rbegin(),v.rend()
7+
#define MEM(a,x) memset(a,x,sizeof(a))
8+
#define SZ(v) v.size()
9+
#define bug cout<<"bug"<<endl;
10+
#define pi acos(-1.0)
11+
#define ll long long
12+
#define pb push_back
13+
#define mp make_pair
14+
#define pii pair< int,int >
15+
#define pll pair< ll,ll >
16+
#define vii vector< int >
17+
#define vll vector< ll >
18+
#define vpi vector< pii >
19+
#define vpl vector<pll>
20+
#define MX 100005
21+
#define EPS 1e-12
22+
#define ss second
23+
#define ff first
24+
using namespace std;
25+
using namespace __gnu_pbds;
26+
27+
template<typename T>
28+
using ordered_set=tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
29+
template<typename T>
30+
using ordered_multiset=tree<T, null_type, less_equal<T>, rb_tree_tag,tree_order_statistics_node_update>;
31+
32+
void Fileio(){freopen ("output.txt","w",stdout);freopen ("input.txt","r",stdin);}
33+
inline ll powr(int a,int b){ll res=1;while(b){if(b&1) res*=a;a*=a;b/=2;}return res;}
34+
int cases=1;
35+
36+
#ifdef ppqq
37+
#define debug(...) __f(#__VA_ARGS__, __VA_ARGS__)
38+
template < typename Arg1 >
39+
void __f(const char* name, Arg1&& arg1){
40+
cerr << name << " is " << arg1 << std::endl;
41+
}
42+
template < typename Arg1, typename... Args>
43+
void __f(const char* names, Arg1&& arg1, Args&&... args){
44+
const char* comma = strchr(names+1, ',');
45+
cerr.write(names, comma - names) << " is " << arg1 <<" ";
46+
__f(comma+1, args...);
47+
}
48+
#else
49+
#define debug(...)
50+
#endif
51+
52+
///******************************************START******************************************
53+
int dp[1000],par[1000],n;
54+
vii v;
55+
56+
int lis(int pos)
57+
{
58+
if(dp[pos]!=-1) return dp[pos];
59+
60+
int temp=0;
61+
for(int i=pos+1;i<=n;i++)
62+
{
63+
if(v[pos]<v[i])
64+
{
65+
int cur=lis(i);
66+
if(cur>temp)
67+
{
68+
temp=cur;
69+
par[pos]=i;
70+
}
71+
}
72+
}
73+
74+
dp[pos]=temp+1;
75+
return dp[pos];
76+
}
77+
78+
int main()
79+
{
80+
FIO;
81+
MEM(dp,-1);
82+
83+
cin>>n;
84+
v.assign(n+1,0);
85+
for(int i=1;i<=n;i++) cin>>v[i];
86+
87+
int start=0,ans=0;
88+
for(int i=n;i>=1;i--)
89+
{
90+
int cur=lis(i);
91+
if(cur>ans)
92+
{
93+
ans=cur;
94+
start=i;
95+
}
96+
}
97+
98+
vii lisvec;
99+
while(start)
100+
{
101+
lisvec.pb(v[start]);
102+
start=par[start];
103+
}
104+
105+
for(auto it:lisvec) cout<<it<<" ";
106+
}

Data Structure/BIT.cpp

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#include<bits/stdc++.h>
2+
#include<ext/pb_ds/assoc_container.hpp>
3+
#include<ext/pb_ds/tree_policy.hpp>
4+
#define FIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
5+
#define all(v) v.begin(),v.end()
6+
#define rall(v) v.rbegin(),v.rend()
7+
#define MEM(a,x) memset(a,x,sizeof(a))
8+
#define bug cout<<"bug"<<endl;
9+
#define pi acos(-1.0)
10+
#define ll long long
11+
#define pb push_back
12+
#define mp make_pair
13+
#define pii pair< int,int >
14+
#define pll pair< ll,ll >
15+
#define vii vector< int >
16+
#define vll vector< ll >
17+
#define vpi vector< pii >
18+
#define vpl vector<pll>
19+
#define MX 100005
20+
#define EPS 1e-12
21+
#define ss second
22+
#define ff first
23+
using namespace std;
24+
using namespace __gnu_pbds;
25+
26+
template<typename T>
27+
using ordered_set=tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
28+
template<typename T>
29+
using ordered_multiset=tree<T, null_type, less_equal<T>, rb_tree_tag,tree_order_statistics_node_update>;
30+
31+
void Fileio(){freopen ("output.txt","w",stdout);freopen ("input.txt","r",stdin);}
32+
inline ll powr(int n,int o){ll a=1;for(int i=0;i<o;i++)a*=n;return a;}
33+
int cases=1;
34+
35+
#ifdef ppqq
36+
#define debug(...) __f(#__VA_ARGS__, __VA_ARGS__)
37+
template < typename Arg1 >
38+
void __f(const char* name, Arg1&& arg1){
39+
cerr << name << " is " << arg1 << std::endl;
40+
}
41+
template < typename Arg1, typename... Args>
42+
void __f(const char* names, Arg1&& arg1, Args&&... args){
43+
const char* comma = strchr(names+1, ',');
44+
cerr.write(names, comma - names) << " is " << arg1 <<" ";
45+
__f(comma+1, args...);
46+
}
47+
#else
48+
#define debug(...)
49+
#endif
50+
51+
///******************************************START******************************************
52+
int bitree[100005],n;
53+
54+
void update(int idx,int val)
55+
{
56+
while(idx<=n)
57+
{
58+
bitree[idx]+=val;
59+
idx+= idx&(-idx); ///finding which index will get effected bcz of prev idx
60+
}
61+
}
62+
63+
int query(int idx)
64+
{
65+
int sum=0;
66+
while(idx>0)
67+
{
68+
sum+=bitree[idx];
69+
idx-= idx&(-idx); ///finding indexes which covers the range
70+
}
71+
return sum;
72+
}
73+
int main()
74+
{
75+
FIO;
76+
cin>>n;
77+
vii v(n+1);
78+
79+
for(int i=1;i<=n;i++) cin>>v[i];
80+
81+
for(int i=1;i<=n;i++) update(i,v[i]);
82+
83+
cout<<query(5)<<endl;
84+
85+
update(2,-8);
86+
87+
cout<<query(5)<<endl;
88+
}

Data Structure/Disjoint Set Union.cpp

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
#define FIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
4+
#define all(v) v.begin(),v.end()
5+
#define MEM(a,x) memset(a,x,sizeof(a))
6+
#define pi acos(-1.0)
7+
#define ll long long
8+
#define pb push_back
9+
#define mp make_pair
10+
#define pii pair< int,int >
11+
#define pll pair< ll,ll >
12+
#define vii vector< int >
13+
#define vll vector< ll >
14+
#define vpi vector< pii >
15+
#define MX 100005
16+
#define EPS 1e-12
17+
#define ss second
18+
#define ff first
19+
int cases=1;
20+
#ifdef ppqq
21+
#define debug(...) __f(#__VA_ARGS__, __VA_ARGS__)
22+
template < typename Arg1 >
23+
void __f(const char* name, Arg1&& arg1){
24+
cerr << name << " is " << arg1 << std::endl;
25+
}
26+
template < typename Arg1, typename... Args>
27+
void __f(const char* names, Arg1&& arg1, Args&&... args){
28+
const char* comma = strchr(names+1, ',');
29+
cerr.write(names, comma - names) << " is " << arg1 <<" ";
30+
__f(comma+1, args...);
31+
}
32+
#else
33+
#define debug(...)
34+
#endif
35+
///******************************************START******************************************
36+
int parent[MX];
37+
int size[MX];
38+
int find_set(int v) {
39+
if (v == parent[v])
40+
return v;
41+
return parent[v] = find_set(parent[v]);
42+
}
43+
44+
void make_set(int v) {
45+
parent[v] = v;
46+
size[v] = 1;
47+
}
48+
49+
void union_sets(int a, int b) {
50+
a = find_set(a);
51+
b = find_set(b);
52+
if (a != b) {
53+
if (size[a] < size[b])
54+
swap(a, b);
55+
parent[b] = a;
56+
size[a] += size[b];
57+
}
58+
}
59+
int main()
60+
{
61+
//freopen ("output.txt","w",stdout);
62+
//freopen ("input.txt","r",stdin);
63+
}

0 commit comments

Comments
 (0)