Heim > Backend-Entwicklung > C++ > Hauptteil

Führen Sie mit C++ bestimmte Operationen an Sequenzen aus

WBOY
Freigeben: 2023-09-03 11:49:06
nach vorne
996 Leute haben es durchsucht

Führen Sie mit C++ bestimmte Operationen an Sequenzen aus

Angenommen, wir haben eine leere Sequenz und n Abfragen, die verarbeitet werden müssen. Abfragen werden in Form von Array-Abfragen im Format {Abfrage, Daten} angegeben. Abfragen können von den folgenden drei Typen sein:

  • query = 1: Hängt die bereitgestellten Daten an das Ende der Sequenz an.

  • query = 2: Drucken Sie das Element am Anfang der Sequenz. Dann löschen Sie das Element.

  • query = 3: Sortiert die Reihenfolge in aufsteigender Reihenfolge.

Beachten Sie, dass die Daten der Abfragetypen 2 und 3 immer 0 sind.

Wenn also die Eingabe n = 9 ist, Abfragen = {{1, 5}, {1, 4}, {1, 3}, {1, 2}, {1, 1}, {2, 0}, {3, 0}, {2, 0}, {3, 0}}, dann ist die Ausgabe 5 und 1.

Die Reihenfolge nach jeder Abfrage ist wie folgt:

  • 1: {5}
  • 2: {5, 4}
  • 3: {5, 4, 3}
  • 4: {5, 4, 3 , 2}
  • 5:{5, 4, 3, 2, 1}
  • 6: {4, 3, 2, 1}, drucken Sie 5.
  • 7: {1, 2, 3, 4}
  • 8: {2, 3, 4}, Druck 1.
  • 9
  • priority_queue<int> priq
    Define one queue q
    for initialize i := 0, when i < n, update (increase i by 1), do:
       operation := first value of queries[i]
       if operation is same as 1, then:
          x := second value of queries[i]
          insert x into q
       otherwise when operation is same as 2, then:
          if priq is empty, then:
             print first element of q
             delete first element from q
          else:
             print -(top element of priq)
             delete top element from priq
        otherwise when operation is same as 3, then:
           while (not q is empty), do:
              insert (-first element of q) into priq and sort
              delete element from q
    Nach dem Login kopieren
  • Ausgabe
#include <bits/stdc++.h>
using namespace std;

void solve(int n, vector<pair<int, int>> queries){
   priority_queue<int> priq;
   queue<int> q;
   for(int i = 0; i < n; i++) {
      int operation = queries[i].first;
      if(operation == 1) {
         int x;
         x = queries[i].second;
         q.push(x);
      } else if(operation == 2) {
         if(priq.empty()) {
             cout << q.front() << endl;
             q.pop();
         } else {
            cout << -priq.top() << endl;
            priq.pop();
         }
      } else if(operation == 3) {
         while(!q.empty()) {
            priq.push(-q.front());
            q.pop();
         }
      }
   }
}
int main() {
   int n = 9; vector<pair<int, int>> queries = {{1, 5}, {1, 4}, {1, 3}, {1, 2}, {1, 1}, {2, 0},  {3, 0}, {2, 0}, {3, 0}};
   solve(n, queries);
   return 0;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonFühren Sie mit C++ bestimmte Operationen an Sequenzen aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage