Submission #404755

#TimeUsernameProblemLanguageResultExecution timeMemory
404755DaktoBoxes with souvenirs (IOI15_boxes)C++17
100 / 100
657 ms327492 KiB
#include <bits/stdc++.h>
using namespace std;


long long delivery(int n, int k, int l, int V[]){
    vector<long long> v(V, V+n);
    v.erase(v.begin(),lower_bound(v.begin(),v.end(),1));
    n=v.size();
    if(n==0) return 0;
    vector<long long> ps, ps2(n);
    long long c=0;
    for(long long i=0; i<n; i++){
        ps.push_back(min(2*v[i], (long long)l)+(i>=k?ps[i-k]:0));
        if((i+1)%k==0){
            c+=min(2*v[i],(long long)l);
        }
    }

    c=0;
    long long j=0;
    for(long long i=n-1; i>=0; i--,j++){
        ps2[i]=min(2*(l-v[i]), (long long)l)+(i+k<n?ps2[i+k]:0);
        if((j+1)%k==0){
            c+=min(2*(l-v[i]),(long long)l);
        }
    }

    long long res=min(ps[n-1],ps2[0]);
    for(long long i=0; i<n-1; i++) res=min(res,ps[i]+ps2[i+1]);
    return res;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:8:13: warning: conversion from 'std::vector<long long int>::size_type' {aka 'long unsigned int'} to 'int' may change value [-Wconversion]
    8 |     n=v.size();
      |       ~~~~~~^~
#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...