1 해설

  • -9
    @ 2023-3-11 16:05:59
    #include<bits/stdc++.h>
    #define int long long
    #define fo(i,a,b) for(int i=a;i<=b;i++)
    using namespace std;
    int n,k;
    int a[10001];
    int f[10001][1001];
    main(){
    	memset(f,0x3f,sizeof(f));
    	cin>>n>>k;
    	k+=3;
    	if(k*2>n){
    		cout<<-1;
    		return 0;
    	}
    	fo(i,1,n) cin>>a[i];
    	sort(a+1,a+n+1);
    	fo(i,0,n) f[i][0]=0;
    	fo(i,2,n){
    		fo(j,1,k){
    			f[i][j]=min(f[i-1][j],f[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]));
    		}
    	}
    	cout<<f[n][k];
    	return 0;
    }
    
    
    • 1

    정보

    ID
    372
    시간
    1000ms
    메모리
    128MiB
    난이도
    3
    태그
    제출 기록
    94
    맞았습니다.
    47
    아이디