Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- priority_queue < pair < int , int >,vector < pair < int , int > > , greater < pair < int , int > > > fq, sq, tq;
- int n, m, q;
- int price[200100];
- int color1[200100];
- int color2[200100];
- bool vis[200100];
- int main()
- {
- cin >> n;
- for(int i = 1 ; i <= n ; i++){
- SF(price[i]);
- }
- for(int i = 1 ; i <= n ; i++){
- SF(color1[i]);
- }
- for(int i = 1 ; i <= n ; i++){
- SF(color2[i]);
- }
- //cout << endl;
- for(int i = 1 ; i <= n ; i++){
- if(color1[i] == 1){
- fq.push({price[i], i});
- }
- if(color1[i] == 2){
- sq.push({price[i], i});
- }
- if(color1[i] == 3){
- tq.push({price[i], i});
- }
- if(color2[i] == 1){
- fq.push({price[i], i});
- }
- if(color2[i] == 2){
- sq.push({price[i], i});
- }
- if(color2[i] == 3){
- tq.push({price[i], i});
- }
- //cout << color1[i] << ' ' << color2[i] << ' '<< price[i] << endl;
- }
- //cout << fq.size() << sq.size() << ' ' << tq.size()
- cin >> m;
- for(int i = 1 ; i <= m ; i++){
- SF(q);
- bool B = true;
- if(q == 1){
- while(fq.size()){
- pair < int , int > u = fq.top();
- fq.pop();
- if(!vis[u.S]){
- cout << u.F << ' ';
- vis[u.S] = true;
- B = false;
- break;
- }
- }
- if(B){
- cout << -1 << ' ';
- }
- }
- if(q == 2){
- while(sq.size()){
- pair < int , int > u = sq.top();
- sq.pop();
- if(!vis[u.S]){
- cout << u.F << ' ';
- vis[u.S] = true;
- B = false;
- break;
- }
- }
- if(B){
- cout << -1 << ' ';
- }
- }
- if(q == 3){
- while(tq.size()){
- pair < int , int > u = tq.top();
- tq.pop();
- if(!vis[u.S]){
- cout << u.F << ' ';
- vis[u.S] = true;
- B = false;
- break;
- }
- }
- if(B){
- cout << -1 << ' ';
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement