제출 #258320

#제출 시각아이디문제언어결과실행 시간메모리
258320eohomegrownapps로봇 (IOI13_robots)C++14
90 / 100
857 ms65540 KiB
#include "robots.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; ll w,h; map<ll,int> grid; ll dp[2][50001]; ll m = 1e9; bool success(ll mid){ for (int y = 0; y<2; y++){ for (int x = 0; x<50001; x++){ dp[y][x]=0; } } for (ll i = w-1; i>=0; i--){ dp[0][i]=mid*(w-1-i); } bool c = 1; for (ll y = h-1; y>=0; y--){ dp[c][w]=mid*(h-1-y); for (ll x = w-1; x>=0; x--){ dp[c][x]=dp[c][x+1]+dp[!c][x]-dp[!c][x+1]-grid[x*m+y]; if (dp[c][x]<0){ return false; } } c=!c; } return true; } int putaway(int lx, int ly, int n, int xpos[], int ypos[], int xtoys[], int ytoys[]) { sort(xpos,xpos+lx); sort(ypos,ypos+ly); for (ll i = 0; i<n; i++){ xtoys[i]=upper_bound(xpos,xpos+lx,xtoys[i])-xpos; ytoys[i]=upper_bound(ypos,ypos+ly,ytoys[i])-ypos; } w=lx+1; h=ly+1; //grid.resize(w,vector<ll>(h,0)); for (ll i = 0; i<n; i++){ grid[(xtoys[i])*m+ytoys[i]]++; } if (grid[(w-1)*m+h-1]>0){ return -1; } ll l = 0, r = n; while (l<=r){ ll mid = (l+r)/2;; if (success(mid)){ r=mid-1; } else { l=mid+1; } } return l; }
#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...