Submission #535466

#TimeUsernameProblemLanguageResultExecution timeMemory
535466kebineRobots (IOI13_robots)C++17
76 / 100
3059 ms25312 KiB
#include <bits/stdc++.h> #include "robots.h" using namespace std; int putaway(int a, int b, int T, int x[], int y[], int W[], int S[]){ vector<pair<int,int>> w, s; for(int i=0;i<T;i++) w.push_back({W[i], i}); for(int i=0;i<T;i++) s.push_back({S[i], i}); sort(w.begin(),w.end(), [&](pair<int,int> _x, pair<int,int> _y){ return S[_x.second] > S[_y.second]; }); sort(s.begin(),s.end(), [&](pair<int,int> _x, pair<int,int> _y){ return W[_x.second] > W[_y.second]; }); sort(x, x + a); sort(y, y + b); queue<pair<int,int>> q; vector<int> dist(T, -1); for(int i=0;i<a;i++) { for(int j=0;j<T;j++) if(w[j].first < x[i] && dist[w[j].second] == -1) { q.push({x[i], w[j].second}); dist[w[j].second] = 1; break; } } for(int i=0;i<b;i++) { for(int j=0;j<T;j++) { if(s[j].first < y[i] && dist[s[j].second] == -1) { q.push({-y[i], s[j].second}); dist[s[j].second] = 1; break; } } } while(!q.empty()){ int c = q.front().first, id = q.front().second;// capacity & type, current vertex q.pop(); if(c < 0) // size robot { c = -c; for(int i=0;i<T;i++) { if(dist[s[i].second] == -1 && s[i].first < c) { dist[s[i].second] = dist[id] + 1; // cout << "S, C : " << c << ' ' << id << "-> " << s[i].second << "\n"; q.push({-c, s[i].second}); break; } } } else // weight robot { for(int i=0;i<T;i++) { if(dist[w[i].second] == -1 && w[i].first < c) { dist[w[i].second] = dist[id] + 1; // cout << "W , C : " << c << " " << id << "-> " << w[i].second << "\n"; q.push({c, w[i].second}); break; } } } } // for(int i=0;i<T;i++) cout << dist[i] << " "; cout << '\n'; if(*min_element(dist.begin(), dist.end()) == -1) return -1; else return *max_element(dist.begin(), dist.end()); } // int main(){ // cin.tie(0) -> ios_base::sync_with_stdio(0); // int a, b, t; // cin >> a >> b >> t; // int x[a], y[b], w[t], s[t]; // for(int i=0;i<a;i++) cin >> x[i]; // for(int i=0;i<b;i++) cin >> y[i]; // for(int i=0;i<t;i++) // { // cin >> w[i] >> s[i]; // } // cout << putaway(a, b, t, x, y, w, s); // }
#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...