Advertisement
Hydracody

Untitled

Mar 29th, 2023
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.03 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define endl "\n"
  4. #define pb push_back
  5. #define pf push_front
  6. #define pob pop_back
  7. #define pof pop_front
  8. #define mp make_pair
  9. #define fi first
  10. #define se second
  11. #define set_bits __builtin_popcountll
  12. #define precise(ans)  cout<<fixed<<setprecision(15)<<ans
  13. #define fo(i,n) for(ll i=0;i<n;i++)
  14. #define Fo(i,k,n) for(ll i=k;k<n?i<n:i>n;k<n?i+=1:i-=1)
  15. #define tr(it, a) for(auto it = a.begin(); it != a.end(); it++)
  16. #define sz(x) ((ll)(x).size())
  17. #define all(x) x.begin(), x.end()
  18. #define PI 3.1415926535897932384626
  19. #define MOD 1000000007
  20. #define MOD1 998244353
  21. typedef long long ll; typedef unsigned long long ull; typedef long double lld; typedef pair<ll, ll>  pii; typedef pair<ll, ll>    pl; typedef vector<ll> vi; typedef vector<vi> vvi; typedef vector<vvi>    vvvi; typedef vector<ll>  vl; typedef vector<vl>  vvl; typedef vector<pii> vpii; typedef vector<pl>  vpl; template <typename T> using prq_mx  = priority_queue<T>; template <typename T> using prq_mn = priority_queue<T, vector<T>, greater<T>>;
  22. const double eps = 1e-9; const ll INF = (ll) 1e9; const ll inf64 = 2e18; const ll INF64 = 9e18;
  23. #ifndef ONLINE_JUDGE
  24. #define debug(x) cerr << #x <<" "; _prll(x); cerr << endl;
  25. #else
  26. #define debug(x)
  27. #endif
  28. void _prll(ll t) {cerr << t;} void _print(ll t) {cerr << t;} void _prll(string t) {cerr << t;} void _prll(char t) {cerr << t;} void _prll(lld t) {cerr << t;} void _prll(double t) {cerr << t;} void _prll(ull t) {cerr << t;} template <class T, class V> void _prll(pair <T, V> p); template <class T> void _prll(vector <T> v); template <class T> void _prll(set <T> v); template <class T, class V> void _prll(map <T, V> v); template <class T> void _prll(multiset <T> v); template <class T, class V> void _prll(pair <T, V> p) {cerr << "{"; _prll(p.fi); cerr << ","; _prll(p.se); cerr << "}";} template <class T> void _prll(vector <T> v) {cerr << "[ "; for (T i : v) {_prll(i); cerr << " ";} cerr << "]";} template <class T> void _prll(set <T> v) {cerr << "[ "; for (T i : v) {_prll(i); cerr << " ";} cerr << "]";} template <class T> void _prll(multiset <T> v) {cerr << "[ "; for (T i : v) {_prll(i); cerr << " ";} cerr << "]";} template <class T, class V> void _prll(map <T, V> v) {cerr << "[ "; for (auto i : v) {_prll(i); cerr << " ";} cerr << "]";}
  29. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  30.  
  31. vector<ll> num;
  32. ll n, k;
  33. string s1,s2;
  34. vl aa(11),bb(11);
  35. ll dp[11][2][2][2][11][11]; // level,last l,last r, sart , last digit of lis,length of lis
  36. ll call(ll pos,ll x,ll y,ll z,ll digit,ll sum) {
  37.   if(pos==n){
  38.     return (sum==k);
  39.   }
  40.   if(dp[pos][x][y][z][digit+1][sum]!=-1){
  41.     // cout<<pos<<" "<<x<<" "<<y<<" "<<z<<" "<<digit<<" "<<sum<<endl;
  42.     return dp[pos][x][y][z][digit+1][sum];
  43.   }
  44.   ll s=aa[pos],e=bb[pos],ans=0;
  45.   if(x)s=0;
  46.   if(y)e=9;
  47.   Fo(i,s,e+1){
  48.     ans+=call(pos+1,(x || i>s),(y || i<e),(z||i),digit,sum);
  49.     if(z==0 && i==0)continue;
  50.     if(i>digit){
  51.       ans+=call(pos+1,(x|| i>s),(y||i<e),(z||i),i,sum+1);
  52.     }
  53.   }
  54.   return dp[pos][x][y][z][digit+1][sum]=ans;
  55. }
  56.  
  57. ll solve2() {
  58.   n=sz(s1);
  59.   fo(i,n){
  60.     aa[i]=(s1[i]-'0');
  61.     bb[i]=(s2[i]-'0');
  62.   }
  63.   debug(aa);
  64.   debug(bb);
  65.   ll ans;
  66.   for(k=10;k>0;k--){
  67.     memset(dp,-1,sizeof(dp));
  68.     ans=call(0,0,0,0,-1,0);
  69.     if(ans!=0){
  70.       break;
  71.     }
  72.   }
  73.   cout<<k<<" "<<ans<<endl;
  74.    
  75. }
  76.  
  77.  
  78. void chal(){
  79.   cin>>s1>>s2;
  80.   while(sz(s1)<sz(s2))s1='0'+s1;
  81.   solve2();
  82.  
  83. }
  84.  
  85.  
  86.  
  87.  
  88.  
  89. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  90. int32_t main() {
  91.   ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); srand(chrono::high_resolution_clock::now().time_since_epoch().count());
  92. #ifndef ONLINE_JUDGE
  93.   freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); freopen("Error.txt", "w", stderr);
  94. #endif
  95.   ll  t; t = 1;
  96.   cin >> t;
  97.   for (ll i = 1; i <= t; i++) {
  98.     cout<<"Case "<<i<<": ";
  99.     chal();
  100.   } return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement