Submission #619436

#TimeUsernameProblemLanguageResultExecution timeMemory
619436aminBoxes with souvenirs (IOI15_boxes)C++14
50 / 100
2092 ms19852 KiB
#include "boxes.h"
#include <bits/stdc++.h>
 using namespace std;
 long long n,l,k,ans[2000000];
long long s[2000000];
long long tr(long i)
 {
     if(i==-1)
     {
         return 1e18;
     }
//cout<<i<<endl;
//cout<<i<<endl;
    long long num=n-i*k;
long long f=i*l;
long long j;
//cout<<n<<' '<<i*k<<endl;
j=1e18;
    if(num<=0)
    {

        j=min(j,f);
      return j;
    }
 //   cout<<num<<endl;
// cout<<num<<endl;
 if(s[n-num]>l/2)
 {
   j=min(j,f+ans[n-num]);
 }

    for(long y=0;y<num;y++)
    {

      //  cout<<y<<' '<<i*k+y+1<<endl;
    f=i*l;
        if(s[y]>l/2)
        {
            break;
        }
if(y+i*k+1==n)
{
    j=min(j,f+ans[y]);
    break;
}
//cout<<y<<endl;
if(y+i*k+1>n)
{
    break;
}
        if(s[y+i*k+1]<=l/2)
        {
            continue;
        }
        //cout<<y<<endl;
        f+=ans[y];
        f+=ans[i*k+y+1];
        j=min(j,f);
     //   cout<<y<<' '<<i*k+y+1<<endl;

    }
   // cout<<i<<' '<<j<<endl;

 return j;


}

long long delivery(int N, int K, int L, int p[]) {
   n=N;
   k=K;
    l=L;
   sort(p,p+n);
   for(long i=0;i<n;i++)
   {
       s[i]=p[i];
   }
   long long preo[n];
   long long pree[n];


   long long v=0;
   for(long i=0;i<n;i++)
   {
       if(p[i]>l/2)
        break;


       long long sum=0;
       for(long y=i;y>=0;y-=k)
       {
           sum+=p[y];

       }
       ans[i]=sum*2;
       v+=2*p[i];

   }
    for(long i=n-1;i>=0;i--)
   {
        if(p[i]<=l/2)
       {
           break;
       }
       long long sum=0;
     for(long y=i;y<n;y+=k)
     {
         sum+=(l-p[y]);
     }
     ans[i]=sum*2;
     v+=2*(l-p[i]);
   }
   //return v;
   long long h=1e18;
   long long f=0;
   long long i=0;
   long long u=pow(2,25);
   while(u>n/k)
   {
       u/=2;
   }
   long long e=u;
   while(u>=1)
   {
       u/=2;
       if(tr(e-u)>tr(e+u))
       {
           e+=u;
       }else
       {
           e-=u;
       }
   }

return min(tr(e),min(tr(e+1),tr(e-1)));
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:78:14: warning: unused variable 'preo' [-Wunused-variable]
   78 |    long long preo[n];
      |              ^~~~
boxes.cpp:79:14: warning: unused variable 'pree' [-Wunused-variable]
   79 |    long long pree[n];
      |              ^~~~
boxes.cpp:114:14: warning: unused variable 'h' [-Wunused-variable]
  114 |    long long h=1e18;
      |              ^
boxes.cpp:115:14: warning: unused variable 'f' [-Wunused-variable]
  115 |    long long f=0;
      |              ^
boxes.cpp:116:14: warning: unused variable 'i' [-Wunused-variable]
  116 |    long long i=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...