제출 #1224826

#제출 시각아이디문제언어결과실행 시간메모리
1224826TadijaSebezLet's Win the Election (JOI22_ho_t3)C++20
100 / 100
94 ms2408 KiB
#include <bits/stdc++.h>
using namespace std;
#define ldb double

const int N=505;

const ldb inf=1e18;
const int bm1=1e9;

ldb dp[N][N];
int a[N],b[N],ord[N],mn[N];
int main(){
    int n,k;
    scanf("%i %i",&n,&k);
    for(int i=1;i<=n;i++){
        scanf("%i %i",&a[i],&b[i]);
        ord[i]=i;
        if(b[i]==-1)b[i]=bm1;
    }
    sort(ord+1,ord+1+n,[&](int i,int j){return make_pair(b[i],a[i])<make_pair(b[j],a[j]);});
    multiset<int> tmp;
    for(int i=n;i>k;i--){
        tmp.insert(a[ord[i]]);
    }
    for(int i=k;i>=1;i--){
        mn[i]=mn[i+1];
        tmp.insert(a[ord[i]]);
        mn[i]+=*tmp.begin();
        tmp.erase(tmp.begin());
    }
    ldb ans=mn[1];
    for(int take=0;take<=k;take++){
        for(int i=0;i<=k;i++){
            for(int j=0;j<=k;j++){
                dp[i][j]=inf;
            }
        }
        dp[0][0]=0;

        for(int i=1;i<=k;i++){
            for(int j=0;j<=min(i,take);j++){
                dp[i][j]=dp[i-1][j]+(ldb)a[ord[i]]/(take+1);
                if(j>0 && b[ord[i]]!=bm1){
                    dp[i][j]=min(dp[i][j],dp[i-1][j-1]+(ldb)b[ord[i]]/j);
                }
            }
            if(i>=take){
                ans=min(ans,dp[i][take]+(ldb)mn[i+1]/(take+1));
            }
        }
    }
    printf("%.12lf\n",ans);
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'int main()':
Main.cpp:14:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |     scanf("%i %i",&n,&k);
      |     ~~~~~^~~~~~~~~~~~~~~
Main.cpp:16:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |         scanf("%i %i",&a[i],&b[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...