Submission #127296

#TimeUsernameProblemLanguageResultExecution timeMemory
127296ekremBoxes with souvenirs (IOI15_boxes)C++98
70 / 100
560 ms111468 KiB
#include "boxes.h"
#include <bits/stdc++.h>
#define st first
#define nd second
#define mp make_pair
#define pb push_back
#define sol (k+k)
#define sag (k+k+1)
#define orta ((bas+son)/2)
#define coc g[node][i]
#define mod 1000000007
#define inf 1000000009
#define N 2000005
using namespace std;

typedef long long ll;
typedef pair < int , int > ii;

ll k, l, cvp, ans, bas[N], son[N];

ll ansver(int i, int j){
	return ((i>=0)?bas[i]:0ll) + son[j] + 1ll*(j - i - 1 + k - 1)/k*l;
}

ll delivery(int n, int kk, int ll, int p[]) {k = kk;l = ll;
	for(int i = 0; i < n; i++)
		bas[i] = (i - k >= 0) ? bas[i - k] + p[i]*2ll : p[i]*2ll;
	for(int i = n - 1; i >= 0; i--)
		son[i] = (n > k + i) ? son[i + k] + (l - p[i])*2ll : (l - p[i])*2ll;
	cvp = ans = son[0];
	int opt = 0;
	for(int i = -1; i < n; i++){
		// cvp = son[0];
		// opt = 0;
		int bas = 0, son = (n - i - 1)/n + 1;
		while(bas < son){
			if(ansver(i, i + 1 + orta*k) >= ansver(i, i + 1 + k + orta*k))
				bas = orta + 1;
			else
				son = orta;
		}
		// for(int j = i + 1; j <= n; j += k){
		// 	cout << i << " " << j << " = " << ansver(i, j) << endl;
		// 	if(ansver(i, j) < cvp){
		// 		cvp = ansver(i, j);
		// 		opt = j;
		// 	}
		// }
		// cout << endl << endl;
		// cout << i << " " << opt << " " << cvp << endl;
		ans = min(ans, ansver(i, i + 1 + orta*k));
	}
    return ans;
}

Compilation message (stderr)

boxes.cpp: In function 'll delivery(int, int, int, int*)':
boxes.cpp:25:43: warning: declaration of 'll' shadows a global declaration [-Wshadow]
 ll delivery(int n, int kk, int ll, int p[]) {k = kk;l = ll;
                                           ^
boxes.cpp:16:19: note: shadowed declaration is here
 typedef long long ll;
                   ^~
boxes.cpp:35:7: warning: declaration of 'bas' shadows a global declaration [-Wshadow]
   int bas = 0, son = (n - i - 1)/n + 1;
       ^~~
boxes.cpp:19:20: note: shadowed declaration is here
 ll k, l, cvp, ans, bas[N], son[N];
                    ^~~
boxes.cpp:35:16: warning: declaration of 'son' shadows a global declaration [-Wshadow]
   int bas = 0, son = (n - i - 1)/n + 1;
                ^~~
boxes.cpp:19:28: note: shadowed declaration is here
 ll k, l, cvp, ans, bas[N], son[N];
                            ^~~
boxes.cpp:37:23: warning: conversion to 'int' from 'll {aka long long int}' may alter its value [-Wconversion]
    if(ansver(i, i + 1 + orta*k) >= ansver(i, i + 1 + k + orta*k))
                 ~~~~~~^~~~~~~~
boxes.cpp:37:56: warning: conversion to 'int' from 'll {aka long long int}' may alter its value [-Wconversion]
    if(ansver(i, i + 1 + orta*k) >= ansver(i, i + 1 + k + orta*k))
                                              ~~~~~~~~~~^~~~~~~~
boxes.cpp:51:34: warning: conversion to 'int' from 'll {aka long long int}' may alter its value [-Wconversion]
   ans = min(ans, ansver(i, i + 1 + orta*k));
                            ~~~~~~^~~~~~~~
boxes.cpp:31:6: warning: unused variable 'opt' [-Wunused-variable]
  int opt = 0;
      ^~~
#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...