Submission #707113

#TimeUsernameProblemLanguageResultExecution timeMemory
707113Nonoze로봇 (IOI13_robots)C++14
14 / 100
1572 ms26876 KiB
#include "robots.h" #include <bits/stdc++.h> using namespace std; int egal0(int N, int A, int W[], int X[]) { int compmax=0; sort(W, W+N); int j=A; int cnt[A]; for (int i = 0; i < A; ++i) { cnt[i]=0; } for (int i = N-1; i >= 0; --i) { int x=j; while (j>0 && X[j-1]>=W[i]) j--; if (x!=j) { cnt[j]++; compmax=max(compmax, 1); } else { int mincomp=INT_MAX, empl=-1; for (int k = j; k < A; ++k) { if (mincomp>cnt[k]) { mincomp=cnt[k]; empl=k; } } cnt[empl]++; compmax=max(compmax, cnt[empl]); } } return compmax; } int putaway(int A, int B, int N, int X[], int Y[], int W[], int S[]) { if (A!=0) sort(X, X+A); if (B!=0) sort(Y, Y+B); int maxa=((A!=0)?X[A-1]:0), maxb=((B!=0)?Y[B-1]:0); vector<pair<int, int>> paires; for (int i = 0; i < N; ++i) { if (W[i]>=maxa && S[i]>=maxb) return -1; paires.push_back({W[i], S[i]}); } sort(paires.begin(), paires.end()); /*if (A==0) { return egal0(N, B, S, Y); } if (B==0) { return egal0(N, A, W, X); } if (N==2) { if ((W[0]<X[0] && S[1]<Y[0]) || (W[1]<X[0] && S[0]<Y[0])) return 1; return 2; }*/ #define int long long int l=0, r=N; while (l<r) { int mid=(l+r) / 2; priority_queue<int> prio; int cnt=0; for (int i = 0; i < A; ++i) { while (cnt < N && paires[cnt].first < X[i]) { prio.push(paires[cnt].second); cnt++; } int midtemp=0; while (midtemp<mid && !prio.empty()) { prio.pop(); midtemp++; } } if (!prio.empty()) { l=mid+1; } else { r=mid; } } #undef int 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...