fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. map<string, int> ostatnie;
  5.  
  6. struct typ {
  7. string s;
  8. int t;
  9. int i;
  10. };
  11.  
  12. deque<typ> kolejka;
  13.  
  14.  
  15. int main() {
  16. int n, b;
  17.  
  18. cin >> n >> b;
  19.  
  20. int akt = 0;
  21.  
  22. for(int i=0; i<n; i++) {
  23. string s;
  24. int trudnosc;
  25. cin >> s >> trudnosc;
  26.  
  27. if(ostatnie.find(s)!=ostatnie.end()&&!kolejka.empty()&&kolejka.back().i<=ostatnie[s]) {
  28. cout << "TAK\n";
  29. }
  30.  
  31. else {
  32. cout << "NIE ";
  33. vector<string> z;
  34. akt += trudnosc;
  35. while(akt>b) {
  36. if(ostatnie[kolejka.back().s] != kolejka.back().i) {
  37. kolejka.pop_back();
  38. }
  39.  
  40. else {
  41. akt -= kolejka.back().t;
  42. z.push_back(kolejka.back().s);
  43. kolejka.pop_back();
  44.  
  45. }
  46. }
  47.  
  48. cout << z.size() << " ";
  49. for(auto ele :z) {
  50. cout << ele << " ";
  51. }
  52.  
  53. cout << "\n";
  54. }
  55. kolejka.push_front({s, trudnosc, i});
  56.  
  57.  
  58.  
  59.  
  60. ostatnie[s] = i;
  61. }
  62.  
  63. return 0;
  64. }
Success #stdin #stdout 0s 5324KB
stdin
6 10
aaa 4
bbb 1
ccc 2
aaa 4
ddd 5
bbb 1
stdout
NIE 0 
NIE 0 
NIE 0 
TAK
NIE 2 bbb ccc 
NIE 0