#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<string>
#include<string.h>
#include<vector>
#include<set>
#include<map>
#include<stdlib.h>
using namespace std;
const long long mod=1000000007;
const long long inf=mod*mod;
int dp[500][500];
int main(){
int a,b,c;scanf("%d%d%d",&a,&b,&c);
for(int i=0;i<500;i++)for(int j=0;j<500;j++)dp[i][j]=mod;
dp[0][0]=0;
for(int i=0;i<a;i++){
int p,q,r;scanf("%d%d%d",&p,&q,&r);
for(int j=499;j>=0;j--)for(int k=499;k>=0;k--){
if(dp[j][k]>=mod)continue;
dp[j+p][k+q]=min(dp[j+p][k+q],dp[j][k]+r);
}
}
int ret=mod;
for(int i=1;i<499;i++){
int s=b*i;
int t=c*i;
if(max(s,t)>=499)continue;
ret=min(ret,dp[s][t]);
}
if(ret>=mod)printf("-1\n");else printf("%d\n",ret);
}
./Main.cpp: In function ‘int main()’:
./Main.cpp:16:36: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int a,b,c;scanf("%d%d%d",&a,&b,&c);
^
./Main.cpp:20:37: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int p,q,r;scanf("%d%d%d",&p,&q,&r);
^