Competitive Programming

Codeforces 345 A. Joysticks

Problem Statement:

http://codeforces.com/problemset/problem/651/A

Approach :
We can solve the problem using simple DP memorization.

Solution :

#include<bits/stdc++.h>
using namespace std ;
//-------------------------------
typedef long long ll ;
typedef vector<int> vi ;
typedef pair<int,int> ii ;
//-------------------------------
#define _CRT_SECURE_NO_WARNINGS
#define pb(a) push_back(a)
#define mp(a,b) make_pair(a,b)
#define rep(i,a,b) for(ll i=(a) ; (i)<(b) ; ++i)
#define inf 2000000000
#define endl "\n"
#define de(x) cerr<<#x<<" is "<<x<<endl;
#define max(a,b) ( (a>b) ? (a) : (b)  )
#define min(a,b) ( (a<b) ? (a) : (b)  )
//------------------------------
int ri() { char c = getchar(); while(c<'0' || c>'9') c=getchar(); int ret = 0; while(c>='0' && c<='9') { ret=10*ret+c-48; c=getchar(); } return ret; }

int mx =0,x,y ;
int dp[111][111];
int solve(int x,int y,int cnt)
{
    if(x<0 || y<0) return -1;
    if(x==0 || y==0)
    {
        mx = max(mx, cnt) ;
        return mx;
    }
    if(dp[x][y]!=-1) return dp[x][y] ;
    dp[x][y] = max(solve(x-2,y+1,cnt+1),solve(x+1,y-2,cnt+1) ) ;
    return dp[x][y] ;
}
int main()
{
    memset(dp,-1,sizeof dp);
    cin >> x >> y ;
    cout << max(0,solve(x,y,0)) ;
}
Tagged

Leave a comment