fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #include<math.h>
  5.  
  6. vector<vector<ll>> liczby(1e6+1);
  7. vector<ll>wczytane;
  8.  
  9. ll binsearch(vector<ll> arr, ll target) {
  10. ll left = 0,right = arr.size() - 1,result = -1;
  11.  
  12. while (left <= right) {
  13. ll mid = left + (right - left) / 2;
  14.  
  15. if (arr[mid] >= target) {
  16. result = arr[mid];
  17. right = mid - 1;
  18. } else {
  19. left = mid + 1;
  20. }
  21. }
  22.  
  23. return result;
  24. }
  25.  
  26.  
  27. int main() {
  28. ios_base::sync_with_stdio(0);
  29. cin.tie(0);
  30. ll ilosc,b,x,aktualna,c,czy;
  31. cin >> ilosc;
  32.  
  33. for(ll i = 0; i<ilosc; i++){
  34. cin >> b;
  35. liczby[b].push_back(i);
  36.  
  37. }
  38. cin >> ilosc;
  39. for(ll i = 0; i<ilosc; i++){
  40.  
  41. cin >> x;
  42. aktualna = 0;
  43. czy = 0;
  44. for(ll e = 0; e<x; e++){
  45. cin >> c;
  46. wczytane.push_back(c);
  47. }
  48. for(auto e:wczytane){
  49. if(liczby[e].size() == 0 or liczby[e][liczby[e].size()-1] < aktualna){
  50. cout << "NIE" << endl;
  51. czy = 1;
  52. break;
  53. }
  54. else{
  55. aktualna = binsearch(liczby[e],aktualna)+1;
  56. }
  57. }
  58. if(!czy){
  59. cout << "TAK" << endl;
  60. }
  61. wczytane.clear();
  62. }
  63. return 0;
  64. }
Success #stdin #stdout 0.01s 26524KB
stdin
20
1 1 2 4 2 1 3 3 4 2 3 5 2 1 1 4 2 1 1 3
10
7
2 5 3 4 5 5 1
6
3 3 5 4 4 4
1
2
3
5 5 4
7
1 3 4 1 3 2 2
1
1
4
1 2 2 5
6
3 2 1 3 4 5
6
5 5 4 1 2 5
59
3 3 5 5 3 5 2 2 3 1 2 3 2 1 4 3 2 4 4 2 1 5 3 3 4 3 1 1 1 1 4 3 5 3 4 5 3 5 3 2 3 1 4 4 1 5 3 2 3 3 3 5 2 1 4 5 5 4 5
stdout
NIE
NIE
TAK
NIE
NIE
TAK
TAK
NIE
NIE
NIE