#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000000 int main(){ int N,C; cin>>N>>C; vector P(N); rep(i,N){ scanf("%d",&P[i]); } sort(P.rbegin(),P.rend()); vector X,Y; rep(i,C){ int t,x; scanf("%d %d",&t,&x); if(t==1)X.push_back(x); else Y.push_back(x); } sort(X.rbegin(),X.rend()); sort(Y.rbegin(),Y.rend()); while(X.size()<=N)X.push_back(0); while(Y.size()<=N)Y.push_back(0); vector dp(N+1,Inf); dp[0] = 0; rep(i,P.size()){ vector ndp(N+1,Inf); rep(j,N+1){ if(dp[j]==Inf)continue; int cost = P[i]; ndp[j+1] = min(ndp[j+1],dp[j] + cost/100 * (100-Y[j])); ndp[j] = min(ndp[j],dp[j] + max(0,cost - X[i-j])); } swap(dp,ndp); } int ans = Inf; rep(i,dp.size())ans = min(ans,dp[i]); cout<