| P1230_1.in|
19553
15 13 7 1 6 13 8 10 13 12 3 4 12 1 9 15 755 434 221 637 432 904 80 973 269 186 273 269 248 341 917
| P1230_1.out |
19332
代码:
#include<bits/stdc++.h>
using namespace std;
inline void read(int &x){
x=0;
bool f=0;
char c;
while((c=getchar())==' '||c=='\n');
if(c=='-') f=1;
else x=c^48;
while((c=getchar())>47&&c<58) x=(x<<3)+(x<<1)+(c^48);
if(f) x=~x+1;
}
inline void write(int x,char f=0){//f>0输出空格,f<0换行by xiaozhao
if(!x) putchar('0');
else{
if(x<0) putchar('-'),x=~x+1;
char s[21]={};
int k=0;
while(x) s[++k]=x%10+48,x/=10;
while(k) putchar(s[k--]);
}
if(f) putchar(f<0?'\n':' ');
}
const int N=520;
struct node{
int t,w;
bool operator < (const node &t){
return w>t.w;
}
}a[N];
bool vis[N];
int m,n;
int main(){
read(m),read(n);
for(int i=1;i<=n;i++) read(a[i].t);
for(int i=1;i<=n;i++) read(a[i].w);
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
bool f=1;
for(int j=a[i].t;j>=1;j--){
if(!vis[j]){
vis[j]=1;
f=0;
break;
}
}
if(f) m-=a[i].w;
}
write(m,-1);
return 0;
}