WA 了
#include <cstdio>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <map>
#include <queue>
#include <stack>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
#pragma GCC optimize(2)
#include <immintrin.h>
#include <emmintrin.h>
using namespace std;
template<class code>inline code read(const code &a){
code x=0;short w=0;char ch=0;
while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return w?-x:x;
}
void pr(register int x){
if(x<0){putchar('-');x=-x;}
if(x>=10)pr(x/10);
putchar(x%10+48);
}
int x,y,k,m,ans=214747;
bool f[105][105][105];
inline void dfs(register int now,register int a,register int b){
if(now>k){ans=min(ans,abs(a+b-m));return;}
if(f[a][b][now]==1)return;//{ans=min(ans,abs(a+b-m));return;}
f[a][b][now]=1;
dfs(now+1,x,b);
dfs(now+1,a,y);
dfs(now+1,0,b);
dfs(now+1,a,0);
if(a<b){
if(y-b>a)dfs(now+1,0,b+a);
else dfs(now+1,a-(y-b),y);
}
else{
if(x-a>b)dfs(now+1,a+b,0);
else dfs(now+1,x,b-(x-a));
}
}
int main(){
x=read(x),y=read(y),k=read(k),m=read(m);
dfs(1,0,0);
printf("%d",ans);
return 0;
}
#2
99 100 100 171
3
my answer 28