Submission #986394

#TimeUsernameProblemLanguageResultExecution timeMemory
986394PyqeAliens (IOI16_aliens)C++17
100 / 100
154 ms8756 KiB
#include <bits/stdc++.h> #include "aliens.h" using namespace std; #define mp make_pair #define fr first #define sc second const long long ub=1e12; long long nn=0,sl[100069],wg[100069],sk[100069]; pair<long long,long long> a[100069],dp[100069]; long long f(long long x,long long w) { return sl[x]*w+wg[x]; } bool cmp(long long x,long long y,long long x2,long long y2) { return mp(x/y,x%y*y2)>mp(x2/y2,x2%y2*y); } bool chk(long long x,long long y,long long y2) { return cmp(wg[x]-wg[y2],sl[y2]-sl[x],wg[x]-wg[y],sl[y]-sl[x]); } long long take_photos(int n,int m,int d,vector<int> ya,vector<int> xa) { long long i,k,x,y,y2,sz,p,sm,c,lh,rh,md,zz,zm; for(i=1;i<=n;i++) { y=ya[i-1]+1; x=xa[i-1]+1; if(x<y) { swap(x,y); } y--; a[i]={x,-y}; } sort(a+1,a+n+1); sz=n; n=0; for(i=1;i<=sz;i++) { x=a[i].fr; y=-a[i].sc; for(;n&&a[n].sc>=y;n--); n++; a[n]={x,y}; } a[n+1].sc=m+1; for(lh=0,rh=ub;lh<=rh;) { md=(lh+rh)/2; nn=0; p=0; for(i=0;i<=n;i++) { x=a[i].fr; y=a[i].sc; y2=a[i+1].sc; if(i) { for(;p<nn&&(!p||f(sk[p+1],x)<f(sk[p],x));p++); dp[i]={f(sk[p],x)+x*x+md,dp[sk[p]].sc+1}; } sl[i]=-y2*2; k=max(x-y2,0ll); wg[i]=dp[i].fr-k*k+y2*y2; for(;nn>=2&&chk(i,sk[nn],sk[nn-1]);nn--); p=min(p,nn); nn++; sk[nn]=i; } sm=dp[n].fr; c=dp[n].sc; if(c<=d) { zz=md; zm=sm; rh=md-1; } else { lh=md+1; } } return zm-zz*d; }

Compilation message (stderr)

aliens.cpp: In function 'long long int take_photos(int, int, int, std::vector<int>, std::vector<int>)':
aliens.cpp:92:15: warning: 'zm' may be used uninitialized in this function [-Wmaybe-uninitialized]
   92 |  return zm-zz*d;
      |               ^
aliens.cpp:92:14: warning: 'zz' may be used uninitialized in this function [-Wmaybe-uninitialized]
   92 |  return zm-zz*d;
      |            ~~^~
#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...