Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using LINT = long long int;
- using PII = pair<int,int>;
- #define PB push_back
- #define FI first
- #define SE second
- #define REP(i,n) for(int i=0;i<(n);++i)
- #define FOR(i, a, b) for(int i=(a);i<(b);++i)
- int dp[10][10][10][10][107][2];
- int n,k;
- bool solve(int d1, int d2, int d3, int d4, int k, bool ada){
- if(k==0)
- return d1*1000+d2*100+d3*10+d4 > n;
- if(dp[d1][d2][d3][d4][k][ada]!=-1)return dp[d1][d2][d3][d4][k][ada];
- bool res;
- if(ada)
- res = solve((d1+1)%10,d2,d3,d4,k-1,!ada)
- || solve(d1,(d2+1)%10,d3,d4,k-1,!ada)
- || solve(d1,d2,(d3+1)%10,d4,k-1,!ada)
- || solve(d1,d2,d3,(d4+1)%10,k-1,!ada);
- else
- res = solve((d1+1)%10,d2,d3,d4,k-1,!ada)
- && solve(d1,(d2+1)%10,d3,d4,k-1,!ada)
- && solve(d1,d2,(d3+1)%10,d4,k-1,!ada)
- && solve(d1,d2,d3,(d4+1)%10,k-1,!ada);
- return (dp[d1][d2][d3][d4][k][ada]=res);
- }
- void process(){
- cin>>n>>k;
- int dd[4];
- int nn=n;
- REP(i,4){
- dd[4-i-1]=nn%10;
- nn/=10;
- }
- // with this it works, dunno why
- memset(dp,-1,sizeof dp);
- if(solve(dd[0],dd[1],dd[2],dd[3],k,true))
- cout<<"Ada"<<endl;
- else
- cout<<"Vinit"<<endl;
- }
- int main() {
- int t;
- cin >> t;
- // memset(dp,-1,sizeof dp);
- while(t--)process();
- return 0;
- }
Add Comment
Please, Sign In to add comment