diff --git a/01GAME_1373B.cpp b/01GAME_1373B.cpp new file mode 100644 index 0000000..14886c7 --- /dev/null +++ b/01GAME_1373B.cpp @@ -0,0 +1,42 @@ +#include +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +bool myc(int a,int b) { + return a>b; +} + +int32_t main() { + fast(); + test{ + string s; + cin>>s; + int n = s.length(); + int ones = 0; + int zeros = 0; + fr(i,0,n) if(s[i] == '0') zeros++; else ones++; + int e = min(zeros,ones); + if(e%2 == 1) cout<<"DA"< +using namespace std; +#define int long long + +int32_t main(){ + #ifndef ONLINE_JUDGE + freopen("input.txt","r",stdin); + freopen("output.txt","w",stdout); + #endif + int t;cin>>t; + while(t--){ + int x,y,a,b; + cin>>x>>y>>a>>b; + int ans = 0; + if(b<2*a){ + int l = abs(x-y); + ans = min(x,y)*b + a*l; + } + else ans = (x+y)*a; + cout< +#include +#include +using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti; +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +int l; +string a, b, s; +int dp[51][17][17][17]; +int solve(int pos, int tr, int si, int ni, int t) { + if (tr == l || si == l || ni == l) return 0; + if (pos == s.length()) return (tr == si) & (si == ni) & (tr > 0); + if (dp[pos][tr][si][ni] != -1 && !t) return dp[pos][tr][si][ni]; + int e = t ? s[pos] - '0' : 9; + int ret = 0; + fr(i, 0, e + 1) ret += solve(pos + 1, tr + (i == 3), si + (i == 6), ni + (i == 9), t & (i == e)); + return t?ret:dp[pos][tr][si][ni] = ret % mod; +} +int32_t main () { + fast(); + int t; cin >> t; + while (t--) { + cin >> a >> b; + //memset(dp, -1, sizeof dp); + int w3 = 0, w6 = 0, w9 = 0; + l = a.length()/3+1; + fr(i,0,a.length()) fr(j,0,l) fr(k,0,l) fr(e,0,l) dp[i][j][k][e] = -1; + fr(i, 0, a.length()) { + if (a[i] == '3') w3++; + else if (a[i] == '6') w6++; + else if (a[i] == '9') w9++; + } + s = a; + if (w3 > 0) w3 = (w3 == w6) & (w6 == w9); + int k = solve(0, 0, 0, 0, 1); + //memset(dp, -1, sizeof dp); + + s = b; + l = b.length()/3+1; + fr(i,0,b.length()) fr(j,0,l) fr(k,0,l) fr(e,0,l)dp[i][j][k][e] = -1; + int d = solve(0, 0, 0, 0, 1); + cout << (d - k + w3+mod)%mod << endl; + } + return 0; +} \ No newline at end of file diff --git a/3n+1_Uva100.cpp b/3n+1_Uva100.cpp new file mode 100644 index 0000000..4a06d99 --- /dev/null +++ b/3n+1_Uva100.cpp @@ -0,0 +1,51 @@ +#include +using namespace std; +#define int unsigned long long +int dp[1000001] = {0}; + +int findVal(int k){ + if(dp[k]) return dp[k]; + if(k&1){ + if(k>1000000){ + return 2+findVal((3*k+1)>>1); + } + else{ + int ans = 2+findVal((3*k+1)>>1); + dp[k] = ans; + return dp[k]; + } + } + else{ + if(k>1000000) return 1+findVal(k/2); + else{ + int ans = 1+findVal(k/2); + dp[k] = ans; + return dp[k]; + } + } +} + +int32_t main(){ + #ifndef ONLINE_JUDGE + freopen("input.txt" , "r",stdin); + freopen("output.txt","w",stdout); + #endif + dp[1] = 1; + + int i,j; + int ans; + while(cin>>i&&cin>>j){ + ans = 0; + if(i>j){ + int temp = i; + i = j; + j = temp; + } + for(int h=i;h<=j;h++){ + ans = max(ans,findVal(h)); + } + + cout< +#include +#include +using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti; +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +int n,m; +int a[1000005][3]; +int b[3][1000005]; +int32_t main () { + fast(); + cin>>n>>m; + int k = min(n,m); + if(k>3){ + int l = n*m; + fr(i,0,l) cin>>m; + cout<<"-1"<>m; + cout<<"0"; + } + else{ + if(m>n){ + char r; + fr(i,0,n) fr(j,0,m){ + cin>>r; + b[i][j] = (r=='1'); + } + //fr(i,0,n) {fr(j,0,m) cout<>r; + a[i][j] = (r=='1'); } + } + // fr(i,0,n) {fr(j,0,m) cout< +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +bool myc(int a,int b) { + return a>b; +} +int32_t main() { + fast(); + test{ + int a,b,n,m; + cin>>a>>b>>n>>m; + if(a+b=m) cout<<"Yes"< +#include +#include +using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti; +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +int n; +int d[25][25]; +int dp[(1<<20)][20]; +int solve(int mask,int las,int start){ + if(__builtin_popcount(mask) == n) return d[las][start]; + if(dp[mask][las]!=-1) return dp[mask][las]; + int ret = 0; + if(__builtin_popcount(mask)>=3) ret = d[las][start]; + fr(i,start+1,n){ + if((!(mask&(1<>n; + int m;cin>>m; + int a,b; + fr(i,0,m){ + cin>>a>>b; + a--;b--; + d[a][b] = d[b][a] = 1; + } + int ans = 0; + fr(s,0,n){ + memset(dp,-1,sizeof dp); + ans += solve((1<<(s)),s,s)/2; + } + cout< +#include +#include +#include +using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti; +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +int32_t main () { + fast(); + test{ + int a;int b; + cin>>a>>b; + deque d; + int ans = 0; + int ansS = 0; + int c = 0; + int csum = 0; + int k; + fr(i,0,a){ + cin>>k; + if(k+csum<=b) { + d.pb(k); + csum+=k; + c++; + if(anscsum)ansS = csum; + } + } + else{ + csum+=k; + c++; + d.pb(k); + while(csum>b){ + csum-=d.at(0); + c--; + d.pop_front(); + } + if(anscsum)ansS = csum; + } + } + } + cout< +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} + +int32_t main() { + fast(); + int n; + cin>>n; + int a[n+1]; + int b[21]; + memset(b,0,sizeof(b)); + fr(i,0,n){ + cin>>a[i]; + fr(j,0,20){ + if(a[i]&((int)(1< +using namespace std; +#define int long long + +int32_t main(){ + int n,m; + cin>>n>>m; + cout< +#include +#include +using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti; +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} + +int32_t main() { + fast(); + test{ + int n; + cin >> n; + string s; + cin >> s; + string a = "abacaba"; + int st, e; + int ans = 0; + fr(i, 0, n - 6) { + fr(j, i, i + 7) { + if (s[j] != a[j - i])break; + else if (j == i+6) ans++; + } + } + if (ans > 1) cout << "No" << endl; + else if (ans == 1) { + cout << "Yes" << endl; + fr(i, 0, n) { + if (s[i] != '?')cout << s[i]; + else cout << "x"; + } + cout< 1) { + for (auto x : v) s[x] = '?'; + } + else if (alt == 1) ans = 1; + } + if (ans) break; + } + if (ans) { + cout << "Yes" << endl; + fr(i, 0, n) { + if (s[i] != '?')cout << s[i]; + else cout << "x"; + } + cout< +using namespace std; +#define int unsigned long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +bool myc(pair a, pair b) { + if(a.fi == b.fi) return a.se>n>>s; + int k = 0; + stack st; + int r = n-1; + while(s[r]=='1' && r>=0){ + st.pu('1'); + r--; + } + r = 0; + while(s[r]=='0' && r<=n-1){ + st.pu('0'); + r++; + } + fr(i,r,n){ + if(s[i] == '0'){ + k=1; + break; + } + } + while(!st.empty()){ + if(st.top()=='1') break; + cout< +//#include +//#include +//using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +/* +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti;*/ +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} + +int tree[800004]; +int lazy[800004][3]; + +void update(int s,int e,int qs,int qe,int i,int a,int d){ + if(lazy[i][0]){ + tree[i]+=((e-s+1)*( 2*lazy[i][1] + lazy[i][2]*(e-s)))/2; + if(s!=e){ + lazy[2*i][0] = lazy[2*i+1][0] = 1; + lazy[2*i][1] += lazy[i][1]; + lazy[2*i][2] += lazy[i][2]; + lazy[2*i+1][1] += lazy[i][1] + ((s+e)/2 - s +1)*lazy[i][2]; + lazy[2*i+1][2] += lazy[i][2]; + } + lazy[i][0] = lazy[i][1] = lazy[i][2] = 0; + } + if(qs<=s && qe>=e){ + tree[i]+=((e-s+1)*( 2*a + d*(e-s)))/2; + if(s!=e){ + lazy[2*i][0] = lazy[2*i+1][0] = 1; + lazy[2*i][1] += a; + lazy[2*i][2] += d; + lazy[2*i+1][1] += a+((s+e)/2-s +1)*d; + lazy[2*i+1][2] += d; + } + return; + } + if(s>qe || e0){ + update(s,(s+e)/2,qs,qe,2*i,a,d); + update((s+e)/2+1,e,qs,qe,2*i+1,a+(r)*d,d); + } + else{ + update((s+e)/2+1,e,qs,qe,2*i+1,a,d); + } + tree[i] = tree[2*i]+tree[2*i+1]; +} +int query(int s,int e,int pi,int i){ + if(lazy[i][0]){ + tree[i]+=((e-s+1)*( 2*lazy[i][1] + lazy[i][2]*(e-s)))/2; + if(s!=e){ + lazy[2*i][0] = lazy[2*i+1][0] = 1; + lazy[2*i][1] += lazy[i][1]; + lazy[2*i][2] += lazy[i][2]; + lazy[2*i+1][1] += lazy[i][1] + ((s+e)/2 - s +1)*lazy[i][2]; + lazy[2*i+1][2] += lazy[i][2]; + } + lazy[i][0] = lazy[i][1] = lazy[i][2] = 0; + } + if(s==e && pi==s) return tree[i]; + else if(epi) return 10000000000000000; + int l = query(s,(s+e)/2,pi,2*i); + int r = query((s+e)/2+1,e,pi,2*i+1); + return min(l,r); +} + +int32_t main() { + fast(); + memset(tree,0,sizeof tree); + memset(lazy,0,sizeof lazy); + int n,m; + cin>>n>>m; + int a,b,c,d; + int r; + fr(i,0,m){ + cin>>a; + if(a==1){ + cin>>b>>c>>d>>r; + update(0,n-1,b-1,c-1,1,d,r); + //cout<>b; + cout< +//#include +//#include +//using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +/* +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti;*/ +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} + +int tree[400004]; +int lazy[400004]; + +void update(int s,int e,int qs,int qe,int i,int up){ + if(lazy[i]){ + tree[i]+=lazy[i]; + if(s!=e){ + lazy[2*i] += lazy[i]; + lazy[2*i+1] += lazy[i]; + } + lazy[i] = 0; + } + if(qs<=s && qe>=e){ + tree[i]+=up; + if(s!=e){ + lazy[2*i] += up; + lazy[2*i+1] += up; + } + return; + } + if(s>qe || e=qs && e<=qe) return tree[i]; + else if(s>qe || e>n>>m; + int a,b,c,d; + fr(i,0,m){ + cin>>a; + if(a==1){ + cin>>b>>c>>d; + update(0,n-1,b,c-1,1,d); + //cout<>b>>c; + cout< +//#include +//#include +//using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +/* +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti;*/ +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} + +int tree[400004]; +int lazy[400004]; + +void update(int s,int e,int qs,int qe,int i,int up){ + if(lazy[i]){ + tree[i]+=(e-s+1)*lazy[i]; + if(s!=e){ + lazy[2*i] += lazy[i]; + lazy[2*i+1] += lazy[i]; + } + lazy[i] = 0; + } + if(qs<=s && qe>=e){ + tree[i]+=(e-s+1)*up; + if(s!=e){ + lazy[2*i] += up; + lazy[2*i+1] += up; + } + return; + } + if(s>qe || e=qs && e<=qe) return tree[i]; + else if(s>qe || e>n>>m; + int a,b,c,d; + fr(i,0,m){ + cin>>a; + if(a==1){ + cin>>b>>c>>d; + update(0,n-1,b,c-1,1,d); + //cout<>b>>c; + cout< +//#include +//#include +//using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +/* +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti;*/ +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} + +int tree[400004]; +int lazy[400004]; + +void update(int s,int e,int qs,int qe,int i,int up){ + if(lazy[i]){ + tree[i]+=lazy[i]; + if(s!=e){ + lazy[2*i] += lazy[i]; + lazy[2*i+1] += lazy[i]; + } + lazy[i] = 0; + } + if(qs<=s && qe>=e){ + tree[i]+=up; + if(s!=e){ + lazy[2*i] += up; + lazy[2*i+1] += up; + } + return; + } + if(s>qe || epi || e>n>>m; + int a,b,c,d; + fr(i,0,m){ + cin>>a; + if(a==1){ + cin>>b>>c>>d; + update(0,n-1,b,c-1,1,d); + //cout<>d; + cout< +#include +#include +#include +using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti; +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} + + + +int32_t main() { + fast(); + test{ + int n; + cin>>n; + int a[n+1]; + fr(i,0,n) cin>>a[i]; + int cnt1 = 0; + int cnt0 = 0; + fr(i,0,n){ + cnt1 += (a[i]==1); + cnt0 += (a[i]==0); + } + if(cnt0 +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} + +int32_t main() { + fast(); + int n; cin >> n; + int a[n + 1]; + fr(i, 0, n) cin >> a[i]; + sort(a, a + n); + if (n == 1) cout << "-1"; + else if (n == 2) { + if (a[1] - a[0] == 0) { + cout << "1" << endl << a[0]; + return 0; + } + vi ans; + if ((a[0] + a[1]) % 2 == 0) { + ans.pb((a[0] + a[1]) / 2); + } + ans.pb(a[0] - (a[1] - a[0])); + ans.pb(a[1] + (a[1] - a[0])); + cout << ans.size() << endl; + sort(ans.begin(), ans.end()); + for (auto i : ans) cout << i << " "; + } + else { + int d = 0; + fr(i, 1, n) { + if (a[i] - a[i - 1] == 0) { + d++; + } + } + if (d == n - 1) { + cout << "1" << endl << a[0]; + } + else if (d > 0) cout << '0'; + else { + set k; + int l = 0; + fr(i, 1, n) { + k.insert(a[i] - a[i - 1]); + if (k.size() > 2) { + l = 1; + break; + } + } + if (l == 1) cout << "0"; + else if (k.size() == 1) { + vi ans; + ans.pb(a[0] - (a[1] - a[0])); + ans.pb(a[n - 1] + (a[1] - a[0])); + cout << ans.size() << endl; + sort(ans.begin(), ans.end()); + for (auto i : ans) cout << i << " "; + } + else { + std::set::iterator it = k.begin(); + vi d; + while (it != k.end()) + { + d.pb((*it)); + it++; + } + if (d[1] != 2 * d[0]) cout << "0"; + else { + vi ind; + fr(i, 1, n) { + if (a[i] - a[i - 1] == d[1]) { + ind.pb(i); + } + } + if (ind.size() > 1) cout << "0"; + else { + cout << "1" << endl; + cout << a[ind[0]] - d[0]; + } + } + } + } + } +} \ No newline at end of file diff --git a/Alice_Bobs&Chocolates_6C.cpp b/Alice_Bobs&Chocolates_6C.cpp new file mode 100644 index 0000000..cd2284d --- /dev/null +++ b/Alice_Bobs&Chocolates_6C.cpp @@ -0,0 +1,27 @@ +#include +using namespace std; +#define int long long + +int32_t main(){ + #ifndef ONLINE_JUDGE + freopen("input.txt","r",stdin); + freopen("output.txt","w",stdout); + #endif + int n; + cin>>n; + int a[n+1]; + for (int i = 0; i < n; ++i) cin>>a[i]; + + int aa[n+1]; aa[0] = 0; + int ba[n+1]; ba[n-1]= 0; + for(int i=1;i +using namespace std; +#define int long long + +int32_t main(){ + #ifndef ONLINE_JUDGE + freopen("input.txt","r",stdin); + freopen("output.txt","w",stdout); + #endif + int n; + cin>>n; + vector a; + int l; + unordered_map m; + for(int i=0;i>l; + a.push_back(l); + m[l] = 1; + } + int d = 0; + for(int i=0;i +#include +#include +using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti; +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +string a, b; +int dp[1002][1002][11][2]; +int k; int n; int m; +int solve(int x, int y, int rem, int c) { + if (x == n || y == m) { + if (rem == 0) return 0; + else return -1000000000; + } + if (rem == 0) return 0; + if (dp[x][y][rem][c] != -1) return dp[x][y][rem][c]; + int ans; + if (c == 1) { + ans = solve(x + 1, y, rem - 1, 0); + ans = max(ans, solve(x, y + 1, rem - 1, 0)); + if (a[x] == b[y]) { + ans = max(ans, 1 + solve(x + 1, y + 1, rem, 1)); + ans = max(ans, 1 + solve(x + 1, y + 1, rem - 1, 0)); + } + } + else { + ans = solve(x + 1, y, rem, 0); + ans = max(ans, solve(x, y + 1, rem, 0)); + if (a[x] == b[y]) { + ans = max(ans, 1 + solve(x + 1, y + 1, rem, 1)); + ans = max(ans, 1 + solve(x + 1, y + 1, rem - 1, 0)); + } + } + return dp[x][y][rem][c] = ans; +} +int32_t main() { + fast(); + cin >> n >> m >> k; + cin >> a >> b; + memset(dp, -1, sizeof(dp)); + cout << solve(0, 0, k, 0); + return 0; +} \ No newline at end of file diff --git a/Alyona and the Tree_682C.cpp b/Alyona and the Tree_682C.cpp new file mode 100644 index 0000000..fc66325 --- /dev/null +++ b/Alyona and the Tree_682C.cpp @@ -0,0 +1,70 @@ +#include +#include +#include +using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti; +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +#define N 100005 +int a[N]; +vector g(N); +int n; +int ans = 0; +int sz[N]; +int nc(int i,int p){ + int dz = 1; + // cout<>n; + fr(i,1,n+1) cin>>a[i]; + int x,y; + fr(i,2,n+1){ + cin>>x>>y; + g[i].pb(mp(x,y)); + g[x].pb(mp(i,y)); + } + nc(1,0); //cout< +#include +#include +using namespace __gnu_pbds; +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define fi first +#define se second +#define mod 1000000007 +typedef tree, rb_tree_tag, + tree_order_statistics_node_update> seti; +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +int n; +int bit[150000][27]; +string s; +//void buildTree() + + +void update(int i,char a){ + while(i<=n){ + bit[i][a-'a'] +=1; + i += (i)&(-i); + } +} +int query(int i,char ch){ + int sum = 0; + while(i>0){ + sum += bit[i][ch-'a']; + i-= i&(-i); + } + return sum; +} + +int minG(int st,int e,char ch){ + int l = 0; + if(st == e) return s[st-1] != ch; + l += ((st+e)/2 +1-st) -(query((st+e)/2,ch) - query(st-1,ch)); + l += minG((st+e)/2+1,e,ch+1); + int k = 0; + k += (e - ((st+e)/2 +1) +1) - (query(e,ch) - query((st+e)/2,ch)); + k += minG(st,(st+e)/2,ch+1); + return min(k,l); +} +int32_t main() { + fast(); + test{ + + cin>>n; + fr(i,0,n+1)fr(j,0,26) bit[i][j] = 0; + //string s; + cin>>s; + fr(i,0,n) update(i+1,s[i]); + cout< +using namespace std; +#define int long long +#define fr(i,a,b) for(int i=a;i=b;i--) +#define vi vector +#define pii pair +#define vpi vector> +#define vvi vector> +#define test int t;cin>>t; while(t--) +#define mp make_pair +#define pb push_back +#define pu push +#define mod 1000000007 +void fast() { + ios_base::sync_with_stdio(false); cin.tie(NULL); +#ifndef ONLINE_JUDGE + freopen("input.txt", "r", stdin); + freopen("output.txt", "w", stdout); +#endif +} +int dp[4005][4005]; +int32_t main() { + fast(); + memset(dp, 0, sizeof dp); + int n; + cin >> n; + int a[n + 1]; + unordered_map m; + fr(i, 0, n) cin >> a[i]; + int ans = 1; + fr(i, 0, n) { + fr(j, 0, i) { + if (m.count(a[i])) { + dp[i][j] = 1 + dp[j][m[a[i]]]; + } + else dp[i][j] = 2; + m[a[j]] = j; + //cout<