Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define endl "\n"
- #define pb push_back
- #define pf push_front
- #define pob pop_back
- #define pof pop_front
- #define mp make_pair
- #define fi first
- #define se second
- #define set_bits __builtin_popcountll
- #define precise(ans) cout<<fixed<<setprecision(15)<<ans
- #define fo(i,n) for(ll i=0;i<n;i++)
- #define Fo(i,k,n) for(ll i=k;k<n?i<n:i>n;k<n?i+=1:i-=1)
- #define tr(it, a) for(auto it = a.begin(); it != a.end(); it++)
- #define sz(x) ((ll)(x).size())
- #define all(x) x.begin(), x.end()
- #define PI 3.1415926535897932384626
- #define MOD 1000000007
- #define MOD1 998244353
- 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>>;
- const double eps = 1e-9; const ll INF = (ll) 1e9; const ll inf64 = 2e18; const ll INF64 = 9e18;
- #ifndef ONLINE_JUDGE
- #define debug(x) cerr << #x <<" "; _prll(x); cerr << endl;
- #else
- #define debug(x)
- #endif
- 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 << "]";}
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- vector<ll> num;
- ll n, k;
- string s1,s2;
- vl aa(11),bb(11);
- ll dp[11][2][2][2][11][11]; // level,last l,last r, sart , last digit of lis,length of lis
- ll call(ll pos,ll x,ll y,ll z,ll digit,ll sum) {
- if(pos==n){
- return (sum==k);
- }
- if(dp[pos][x][y][z][digit+1][sum]!=-1){
- // cout<<pos<<" "<<x<<" "<<y<<" "<<z<<" "<<digit<<" "<<sum<<endl;
- return dp[pos][x][y][z][digit+1][sum];
- }
- ll s=aa[pos],e=bb[pos],ans=0;
- if(x)s=0;
- if(y)e=9;
- Fo(i,s,e+1){
- ans+=call(pos+1,(x || i>s),(y || i<e),(z||i),digit,sum);
- if(z==0 && i==0)continue;
- if(i>digit){
- ans+=call(pos+1,(x|| i>s),(y||i<e),(z||i),i,sum+1);
- }
- }
- return dp[pos][x][y][z][digit+1][sum]=ans;
- }
- ll solve2() {
- n=sz(s1);
- fo(i,n){
- aa[i]=(s1[i]-'0');
- bb[i]=(s2[i]-'0');
- }
- debug(aa);
- debug(bb);
- ll ans;
- for(k=10;k>0;k--){
- memset(dp,-1,sizeof(dp));
- ans=call(0,0,0,0,-1,0);
- if(ans!=0){
- break;
- }
- }
- cout<<k<<" "<<ans<<endl;
- }
- void chal(){
- cin>>s1>>s2;
- while(sz(s1)<sz(s2))s1='0'+s1;
- solve2();
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- int32_t main() {
- ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); srand(chrono::high_resolution_clock::now().time_since_epoch().count());
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); freopen("Error.txt", "w", stderr);
- #endif
- ll t; t = 1;
- cin >> t;
- for (ll i = 1; i <= t; i++) {
- cout<<"Case "<<i<<": ";
- chal();
- } return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement