Submission #511223

#TimeUsernameProblemLanguageResultExecution timeMemory
511223AdamGSBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
501 ms224904 KiB
#include "boxes.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define rep(a, b) for(int a = 0; a < (b); ++a)
#define st first
#define nd second
#define pb push_back
#define all(a) a.begin(), a.end()
long long delivery(int N, int K, int L, int V[]) {
	ll n=N, k=K, l=L, T[n], ans=0;
	rep(i, n) T[i]=V[i];
	int p=0;
	while(p<n && T[p]<=l/2) ++p;
	for(int i=p-1; i>=0; i-=k) ans+=2*T[i];
	for(int i=p; i<n; i+=k) ans+=2*(l-T[i]);
	ll suf[n+1];
	suf[n]=0;
	for(int i=n-1; i>=0; --i) {
		suf[i]=0;
		if(i+k<n) suf[i]=suf[i+k];
		if(T[i]>l/2) suf[i]+=2*(l-T[i]);
		else if(T[min(i+k-1, n-1)]<=l/2) suf[i]+=2*T[min(i+k-1, n-1)];
		else suf[i]+=l;
	}
	ans=min(ans, suf[0]);
	rep(i, k) {
		if(T[i]<=l/2) ans=min(ans, 2*T[i]+suf[i+1]);
		else ans=min(ans, l+suf[i+1]);
	}
	return ans;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:16:24: warning: conversion from 'll' {aka 'long long int'} to 'int' may change value [-Wconversion]
   16 |  for(int i=p-1; i>=0; i-=k) ans+=2*T[i];
      |                       ~^~~
boxes.cpp:17:21: warning: conversion from 'll' {aka 'long long int'} to 'int' may change value [-Wconversion]
   17 |  for(int i=p; i<n; i+=k) ans+=2*(l-T[i]);
      |                    ~^~~
boxes.cpp:20:13: warning: conversion from 'll' {aka 'long long int'} to 'int' may change value [-Wconversion]
   20 |  for(int i=n-1; i>=0; --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...