代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <ctime>
using namespace std;
struct Holder{
int t,v;
}a[100000];
int cmp(Holder a,Holder b){
double x=(double)a.v/a.t,y=(double)a.v/a.t;
return x>y;
}
int T,M,ans=0;
int Rand(){
sort(a+1,a+1+M,cmp);
for(int i=1;i<=10;i++){
swap(a[rand()%M+1],a[rand()%M+1]);
}
}
int Calculate(){
int t=T,sum=0;
for(int i=1;i<=M;i++){
if(t>=a[i].t){
t-=a[i].t;
sum+=a[i].v;
}
}
if(ans<sum)ans=sum;
}
int main(){
srand(time(0));
cin>>T>>M;
for(int i=1;i<=M;i++){
cin>>a[i].t>>a[i].v;
}
for(int i=1;i<=70000;i++){
Rand();
Calculate();
}
cout<<ans<<endl;
}