1 solutions
-
6
#include<bits/stdc++.h> using namespace std; int N,M,area,marea=1e9; void dfs(int v,int m,int r,int h){ if((m*(m-1)/2)*(m*(m-1)/2)>v||r<m||h<m)return; if(m==0){ if(v==0)marea=min(marea,area); return; } for(int rr=r;rr>=m;rr--){ if(m==M)area=rr*rr; for(int hh=h;hh>=m;hh--){ int t=0; for(int i=0;i<m;i++)t+=(r-i)*(r-i)*(h-i); if(t<v)break; area+=2*rr*hh; if(area>=marea){area-=2*rr*hh;continue;} dfs(v-rr*rr*hh,m-1,rr-1,hh-1); area-=2*rr*hh; } } } int main(){ cin>>N>>M; dfs(N,M,sqrt((N-(M*(M-1)/2)*(M*(M-1)/2))/M),(N-(M*(M-1)/2)*(M*(M-1)/2))/M/M); if(marea==1e9)cout<<0; else cout<<marea; return 0; }
- 1
Information
- ID
- 20
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- 9
- Tags
- # Submissions
- 89
- Accepted
- 10
- Uploaded By