Submission #439089

#TimeUsernameProblemLanguageResultExecution timeMemory
439089adamjinweiRobots (IOI13_robots)C++14
100 / 100
1980 ms24764 KiB
#include <bits/stdc++.h> #include "robots.h" #define inf 1000000007 #define mod 1000000007 #define rnd() rand_num() #define bigrnd() dis(rand_num) //#pragma GCC optimize("Ofast","inline","-ffast-math") //#pragma GCC target("avx,sse2,sse3,sse4,mmx") //#define int long long using namespace std; unsigned sed=std::chrono::system_clock::now().time_since_epoch().count(); mt19937 rand_num(sed); uniform_int_distribution<long long> dis(0,inf); template <typename T> void read(T &x){ x=0;char ch=getchar();int fh=1; while (ch<'0'||ch>'9'){if (ch=='-')fh=-1;ch=getchar();} while (ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); x*=fh; } template <typename T> void write(T x) { if (x<0) x=-x,putchar('-'); if (x>9) write(x/10); putchar(x%10+'0'); } template <typename T> void writeln(T x) { write(x); puts(""); } int m1,m2,n; int lim1[50005],lim2[50005]; pair<int,int> p[1000005]; bool check(int mid) { priority_queue<int> pq; int id=1; for(int i=1;i<=m1;++i) { while(id<=n&&p[id].first<lim1[i]) { pq.push(p[id].second); id++; } for(int j=1;j<=mid;++j) { if(pq.empty()) break; pq.pop(); } } while(id<=n) { pq.push(p[id].second); id++; } for(int i=m2;i>=1;--i) { for(int j=1;j<=mid;++j) { if(pq.empty()) break; if(pq.top()>=lim2[i]) break; pq.pop(); } } return pq.empty(); } int putaway(int A,int B,int T,int X[],int Y[],int W[],int S[]) { m1=A;m2=B;n=T; for(int i=1;i<=m1;++i) lim1[i]=X[i-1]; for(int i=1;i<=m2;++i) lim2[i]=Y[i-1]; sort(lim1+1,lim1+m1+1); sort(lim2+1,lim2+m2+1); for(int i=1;i<=n;++i) p[i]=make_pair(W[i-1],S[i-1]); sort(p+1,p+n+1); int l=1,r=T; while(l<r) { int mid=l+r>>1; if(check(mid)) r=mid; else l=mid+1; } if(check(l)) return l; return -1; }

Compilation message (stderr)

robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:80:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   80 |   int mid=l+r>>1;
      |           ~^~
#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...