Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- const int MX=1e5+5;
- typedef long long ll;
- int n,m;
- ll adj[333][333];
- ll dp[333][333];
- ll solve(int pies,int id)
- {
- if(id==n)return 0;
- // cout<<pies<<' '<<id<<endl;
- int sum=0;
- ll ans=dp[pies][id];
- if(ans!=-1)return ans;
- ans=1e10;
- for(int i=0; i<min(n-id-pies,m); i++)
- {
- sum+=adj[id][i];
- ans=min(ans,sum+(i+1)*(i+1)+solve(pies+i,id+1));
- }
- if(pies)ans=min(ans,solve(pies-1,id+1));
- return dp[pies][id]=ans;
- }
- int main()
- {
- //freopen("pie_progress.txt","r",stdin);
- // freopen("outhacker.txt","r",stdin);
- int g=0,t;
- scanf("%d",&t);
- //cout<<t<<endl;
- while(t--)
- {
- memset(dp,-1,sizeof dp);
- scanf("%d%d",&n,&m);
- //cout<<n<<' '<<m<<endl;
- for(int i=0; i<n; i++)
- {
- for(int j=0; j<m; j++)
- {
- ll x;
- scanf("%I64d",&x);
- adj[i][j]=x;
- // cout<<x<<' ';
- }
- sort(adj[i],adj[i]+m);
- }
- //cout<<endl;
- printf("Case #%d: %lld\n",++g,solve(0,0));
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment