#include<iostream>
using namespace std;
const int N=1e2+10;
int a[N];
int main(){
int n;
cin>>n;
int num=0;
for(int i=1;i<=n;i++){
cin>>a[i];
num+=a[i];
}
int ans=0;
num/=n;
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
a[j+1]+=a[j]-num;
a[j]=num;
}
for(int j=i;j<=n;j++){
a[j+1]+=a[j]-num;
a[j]=num;
}
}
}
#include<iostream>
#include<cstring>
using namespace std;
const int N=1010;
int v[N],w[N];
int dp[N][N];
int main(){
int t,m;
cin>>t>>m;
for(int i=1;i<=m;i++){
cin>>w[i]>>v[i];
}
for(int i=1;i<=m;i++){
for(int j=0;j<=t;j++){
if(j>=w[i])dp[i][j]=max(dp[i-1][j-w[i]]+v[i],dp[i-1][j]);
else dp[i][j]=dp[i-1][j];
}
}
cout<<dp[m][t];
}
#include<iostream>
using namespace std;
const int N=2e4+10;
int v[40];
int dp[40][N];
int main(){
int V,n;
cin>>V>>n;
for(int i=1;i<=n;i++){
cin>>v[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=V;j++){
if(j>=v[i])dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+v[i]);
else dp[i][j]=dp[i-1][j];
}
}
cout<<V-dp[n][V];
}
#include<iostream>
using namespace std;
const int N=30;
int v[N],p[N];
int dp[N][31000];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>v[i]>>p[i];
}
for(int i=1;i<=m;i++){
for(int j=0;j<=n;j++){
if(v[i]<=j)dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+p[i]*v[i]);
else dp[i][j]=dp[i-1][j];
}
}
cout<<dp[m][n];
}
#include<iostream>
using namespace std;
const int N=110;
int dp[N][11000];
int a[N];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
for(int j=0;j<=m;j++){
if(j==a[i])dp[i][j]=max(dp[i-1][j],dp[i-1][j]+1);
else if(j>a[i])dp[i][j]=dp[i-1][j]+dp[i-1][j-a[i]];
else dp[i][j]=dp[i-1][j];
}
}
cout<<dp[n][m];
}
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e3+10;
struct node{
int id,t;
bool operator < (node& p){
return t<p.t;
}
};
struct node a[N];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].t;
a[i].id=i;
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
cout<<a[i].id<<" ";
}
cout<<endl;
double ans=0;
int cnt=0;
for(int i=1;i<=n;i++){
ans+=cnt;
cnt+=a[i].t;
}
printf("%.2lf",ans/n);
}
#include<iostream>
using namespace std;
const int N=1e4+10;
class P1616 {
public:
int ti[N],v[N];
int dp[N][N];
int main() {
int t,m;
cin>>t>>m;
for(int i=1; i<=m; i++) {
cin>>ti[i]>>v[i];
}
for(int i=1; i<=m; i++) {
for(int j=0; j<ti[i]; j++) {
dp[i][j]=dp[i-1][j];
}
for(int j=ti[i]; j<=t; j++) {
dp[i][j]=max(dp[i][j],dp[i][j-ti[i]]+v[i]);
}
}
cout<<dp[m][t]<<endl;
}
};
int main() {
P1616 aa;
aa.main();
}
#include<iostream>
#include<cmath>
using namespace std;
const int N=1e3+10;
int s;
int dp[N];
int cnt[N];
int main(){
for(int i=1;i<=N-10;i++){
for(int j=1;j<=sqrt(i);j++){
if(i%j==0)cnt[i]+=j+i/j;
if(j==i/j){
cnt[i]-=j;
}
}
cnt[i]-=i;
}
cin>>s;
for(int i=1;i<=s;i++){
for(int j=s;j>=i;j--){
dp[j]=max(dp[j],dp[j-i]+cnt[i]);
}
}
cout<<dp[s];
}
#include<iostream>
#define int long long
using namespace std;
const int N=1e3+10;
int lose[N],win[N],use[N];
int dp[N][N];
signed main(){
int n,x;
cin>>n>>x;
for(int i=1;i<=n;i++){
cin>>lose[i]>>win[i]>>use[i];
}
for(int i=1;i<=n;i++){
for(int j=0;j<=x;j++){
if(j>=use[i])dp[i][j]=max(dp[i-1][j],dp[i-1][j-use[i]]+win[i]);
dp[i][j]=max(dp[i-1][j],max(dp[i][j],dp[i-1][j]+lose[i]));
}
}
cout<<dp[n][x]*5;
}
#include<iostream>
#include<algorithm>
using namespace std;
const int N=200;
int dp[N];
int t[N],et[N],v[N];
int main(){
int n,m,k,r;
cin>>n>>m>>k>>r;
for(int i=1;i<=n;i++)cin>>t[i];
for(int i=1;i<=m;i++)cin>>et[i];
for(int i=1;i<=m;i++)cin>>v[i];
sort(t+1,t+1+n);
for(int i=1;i<=n;i++){
for(int j=0;j<=r;j++){
if(j>=et[i]){
dp[j]=max(dp[j],dp[j-et[i]]+v[i]);
}
}
}
int res=0;
for(int i=1;i<=r;i++){
if(dp[i]>=k){
res=r-i;
break;
}
}
int ans=0;
for(int i=1;i<=n;i++){
if(res<t[i])break;
res-=t[i];
ans++;
}
cout<<ans;
}
#include<iostream>
#include<cstring>
using namespace std;
const int N=1e3+10;
int w[N],v[N];
int dp[N][N];
int n,p,s;
int f(int num){
memset(dp,0,sizeof dp);
for(int i=1;i<=n;i++){
bool flag=false;
if(w[i]>num)flag=true;
for(int j=0;j<=s;j++){
dp[i][j]=dp[i-1][j];
if(j>=w[i]&&!flag)dp[i][j]=max(dp[i][j],dp[i-1][j-w[i]]+v[i]);
}
}
return dp[n][s];
}
int main(){
cin>>n>>p>>s;
for(int i=1;i<=n;i++){
cin>>w[i]>>v[i];
}
int l=0,r=N;
while(l<r){
long mid=(r+l)/2;
int res=f(mid);
if(res>=p){
r=mid;
}
else l=mid+1;
}
if(f(l)<p){
printf("No Solution!\n");
}
else{
printf("%d\n",l);
}
}