一本通1268
#include<bits/stdc++.h>
using namespace std;
int m,n,w[105],c[105],w1=0,v1=0,maxi=-1e9;
inline void dfs(int x){
if(x>n)
{
if(w1<=m){
maxi=max(maxi,v1);
}
return;
}
for(int i=0;;i++){
if((w1+w[x]*i)<=m){
w1+=w[x]*i;
v1+=c[x]*i;
dfs(x+1);
w1-=w[x]*i;
v1-=c[x]*i;
}else break;
}
}
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
inline void write(int x){
char num[300];int cnt=0;
if(x==0){putchar('0');return;}
if(x<0){putchar('-');x=-x;}
while(x>0){num[cnt++]=x%10+'0';x/=10;}
while(cnt>0){putchar(num[--cnt]);}return;
}
int main(){
m=read();n=read();
for(int i=1;i<=n;i++){
cin>>w[i]>>c[i];
}
dfs(1);
putchar('m');
putchar('a');
putchar('x');
putchar('=');
write(maxi);
return 0;
}