6
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> using namespace std; const int mn=100000+10; int n,m; int b[mn]; struct node{ int d,p; bool operator<(node t)const {return p>t.p;}//注意 }a[mn]; bool cmp(node t1,node t2) { return t1.d<t2.d; } int main() { ios::sync_with_stdio(0); cin>>n>>m; for(int i=0;i<n;i++) cin>>b[i]; for(int i=0;i<m;i++) cin>>a[i].d>>a[i].p; sort(b,b+n); sort(a,a+m,cmp); int p=m-1; priority_queue<node> q; long long ans=0; for(int i=n-1;i>=0;i--) { while(p>=0&&a[p].d>=b[i]) q.push(a[p]),p--; if(q.empty()) { cout<<"No Solution"<<endl; return 0; } else { ans+=q.top().p; q.pop(); } } cout<<ans<<endl; return 0; }