#include <bits/stdc++.h>
#define ps putchar(' ')
#define pe putchar('\n')
// #define int long long
#define pi pair<int, int>
#define fi first
#define se second
#define ls p<<1
#define rs p<<1|1
//#define ls son[p][0]
//#define rs son[p][1]
#define len (r-l+1)
#define mid ((l+r)>>1)
using namespace std;
inline int read() {
int f=0, ans=0;
char c=getchar();
while(!isdigit(c)) f|=c=='-', c=getchar();
while(isdigit(c)) ans=(ans<<3)+(ans<<1)+c-48, c=getchar();
return f?-ans:ans;
}
void write(int x) {
if(x<0) putchar('-'), x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
const int N=1e2+5, M=1e3+5, inf=1e9, mod=998244353;
int n, m, kth, a[N], x[N];
int f[N][M][N][2];
signed main() {
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
n=read(), m=read(), kth=read();
for(int i=1;i<=n;++i) a[i]=read(), x[i]=read();
for(int j=0;j<=m;++j)
for(int k=0;k<=kth;++k)
for(int l=0;l<2;++l)
f[0][j][k][l]=-inf;
f[0][0][0][0]=0;
for(int i=1;i<=n;++i) {
for(int j=0;j<=m;++j)
for(int k=0;k<=kth;++k)
for(int l=0;l<2;++l) {
f[i][j][k][0]=f[i-1][j][k][0];
f[i][j][k][1]=max(f[i-1][j][k][0], f[i-1][j][k][1]);
}
for(int j=x[i];j<=m;++j)
for(int k=0;k<=kth;++k) {
f[i][j][k][0]=max(f[i][j][k][0], f[i-1][j-x[i]][k][0]+a[i]);
f[i][j][k][1]=max(f[i][j][k][1], f[i-1][j-x[i]][k][1]+a[i]);
if(k>0)
f[i][j][k][0]=max(f[i][j][k][0], f[i-1][j-x[i]][k-1][0]+(a[i]<<1)),
f[i][j][k][1]=max(f[i][j][k][1], f[i-1][j-x[i]][k-1][1]+(a[i]<<1));
}
}
int ans=-inf;
for(int j=0;j<=m;++j)
// for(int k=0;k<=kth;++k)
ans=max(ans, f[n][j][kth][1]);
write(ans);
return 0;
}
末尾的
for(int j=0;j<=m;++j)
// for(int k=0;k<=kth;++k)
ans=max(ans, f[n][j][kth][1]);
改为
for(int j=0;j<=m;++j)
for(int k=0;k<=kth;++k)
ans=max(ans, f[n][j][k][1]);
才能过,为什么
题面不是说 每位老师的行为必须执行 吗