제출 #1059230

#제출 시각아이디문제언어결과실행 시간메모리
1059230vjudge1로봇 (IOI13_robots)C++17
28 / 100
116 ms19784 KiB
#include "robots.h" #include<bits/stdc++.h> #define ll long long using namespace std; vector<pair<int,int>> Tw,Ts; int a, t; vector<int> x; bool bcheck(int n){ int pos=0,cnt=n,toys_cnt=0; for(int i=0; i < t; i++){ if(Tw[i].first < x[pos]){ cnt--; toys_cnt++; } if(cnt == 0){ cnt = n; pos++; } if(pos >= a)break; } return toys_cnt == t; } int binary(int l, int r){ int n; while(l <= r){ n = (l+r)/2; if(bcheck(n)){ r = n-1; }else{ l = n+1; } } return l; } int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { int ans=-1; if(T == 2 && A+B == 2){ for(int i=0; i < T; i++){ Tw.push_back({W[i],S[i]}); Ts.push_back({S[i],W[i]}); } sort(Tw.rbegin(),Tw.rend()); sort(Ts.rbegin(),Ts.rend()); int r1=0,r2=0; if(A == 2){ for(int i=0; i < T; i++){ if(Tw[i].first < X[0]){ r1++; } if(Tw[i].first < X[1]){ r2++; } } }else if(B == 2){ for(int i=0; i < T; i++){ if(Ts[i].first < Y[0]){ r1++; } if(Ts[i].first < Y[1]){ r2++; } } }else{ for(int i=0; i < T; i++){ if(Tw[i].first < X[0]){ r1++; } } for(int i=0; i < T; i++){ if(Ts[i].first < Y[0]){ r2++; } } } ans=-1; if((r1 == 2 && r2 >= 1) || (r2 == 2 && r1 >= 1)){ ans = 1; }else if((r1 == 2 && r2 == 0) || (r2 == 2 && r1 == 0)){ ans = 2; }else if(r1 == 1 && r2 == 1){ int a,b; for(int i=0; i < T; i++){ if(Tw[i].first < X[0]){ a = i; } if(Tw[i].second < Y[0]){ b = i; } } if(a != b){ ans = 1; } } return ans; } a = A; t = T; for(int i=0; i < A; i++){ x.push_back(X[i]); } sort(x.rbegin(),x.rend()); for(int i=0; i < T; i++){ Tw.push_back({W[i],S[i]}); } sort(Tw.rbegin(),Tw.rend()); ans=binary(1,T); if(ans > T)ans = -1; return ans; }
#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...