Submission #849378

#TimeUsernameProblemLanguageResultExecution timeMemory
849378abcvuitunggioBoxes with souvenirs (IOI15_boxes)C++17
0 / 100
1 ms2392 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
vector <int> a,b;
long long res,dp[10000001],dp2[10000001];
long long delivery(int N, int K, int L, int p[]){
    for (int i=0;i<N;i++)
        if (p[i]<=L/2)
            a.push_back(p[i]);
        else
            b.push_back(L-p[i]);
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
    for (int i=0;i<a.size();i++)
        dp[i]=(i>=K?dp[i-K]:0)+a[i]*2;
    for (int i=0;i<b.size();i++)
        dp2[i]=(i>=K?dp2[i-K]:0)+b[i]*2;
    int i=(int)a.size()-1,j=(int)b.size()-1;
    while (i>=0||j>=0){
        pair <long long, int> mn={1e18,-1};
        for (int l=0;l<=K;l++)
            mn=min(mn,{(i<l?0:dp[i-l])+(j<K-l?0:dp2[j]),l});
        if (mn.first+L>dp[i]+dp2[j]){
            res+=dp[i]+dp2[j];
            break;
        }
        res+=mn.first;
        i-=mn.second;
        j-=K-mn.second;
    }
    return res;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:14:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |     for (int i=0;i<a.size();i++)
      |                  ~^~~~~~~~~
boxes.cpp:16:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |     for (int i=0;i<b.size();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...