#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define MAX_FISH_NUM 10
int number=0;
int total=0;
typedef info
{
int num;
int price;
}info,*pinfo;
info fish[MAX_FISH_NUM];
int conf[MAX_FISH_NUM+MAX_FISH_NUM];
int fishSerial[MAX_FISH_NUM];
int fishNum[MAX_FISH_NUM];
void construct()
{
int idi=0;
int to=MAX_FISH_NUM+MAX_FISH_NUM;
for(idi=0;idi<MAX_FISH_NUM;idi++)
{
fish[idi].num=-1;
fish[idi].price=-1;
}
for(idi=0;idi<to;idi++)
conf[idi]=-1;
for(idi=0;idi<MAX_FISH_NUM;idi++)
{
fishNum[idi]=0;
fishSerial[idi]=-1;
}
}
void destruct()
{
}
void init()
{
ifstream in("in.txt");
int idi=0;
int tick=0;
in>>total;
in>>number;
for(idi=0;idi<number;idi++)
{
in>>fish[idi].num;
in>>fish[idi].price;
}
idi=0;
while(conf[tick]!=0&&conf[tick+1]!=0&&idi<MAX_FISH_NUM)
{
in>>conf[tick]>>conf[tick+1];
idi++;
tick=2*idi;
}
for(idi=0;idi<number;idi++)
{
fishSerial[idi]=fish[idi].num;
}
in.close();
}
bool isConf(int t1,int t2)
{
//ignored...
}
int curCap=0;
int curKinds=0;
int lastMax=0;
int maxKinds=0;
bool isExist(int t)
{
//ignored...
}
int g_savedNum[MAX_FISH_NUM];
void print()
{
cout<<"result is "<<endl;
for(int i=0;i<number;i++)
if(g_savedNum[i]>0)
cout<<" "<<g_savedNum[i];
}
void solve()
{
int idi=0;
if(curCap>=total)
{
if(curKinds==maxKinds&&curCap>lastMax)
{
for(idi=0;idi<MAX_FISH_NUM;idi++)
g_savedNum[idi]=fishNum[idi];
}
if(lastMax<curCap)
lastMax=curCap;
return;
}
for(idi=0;idi<number;idi++)
{
if(!isExist(idi)&&!isConf(idi))
{
curKinds++;
}
fishNum[idi]++;
curCap+=fish[idi].price;
solve();
fishNum[idi]--;
curCap-=fish[idi].price;
if(fishNum[idi]==0)
curKinds--;
solve();
}
}
void goodbye()
{
cout<<"good bye !"<<endl;
}
int main()
{
atexit(goodbye);
cout<<"in my oppinon , the solution should like this :"<<endl;
cout<<"constructing..."<<endl;
construct();
cout<<"initing..."<<endl;
init();
cout<<"reading data..."<<endl;
read();
cout<<"solving..."<<endl;
solve();
cout<<"ok,press any key to continue..."endl;
getch();
destruct();
return 0;
}