AlenAntonelli

Poklon (palomar, vector)

Jun 28th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. using namespace std;
  5.  
  6. map<int,int> id;
  7. int dar_id(const int &num)
  8. {
  9.     if (!id[num])
  10.         id[num] = id.size();
  11.    
  12.     return id[num]-1;
  13. }
  14.  
  15. vector<int> cant;
  16. void add (const int &num)
  17. {
  18.     if (num == cant.size() )
  19.         cant.push_back(1);
  20.     else cant[num]++;
  21. }
  22.  
  23. int main()
  24. {
  25.     vector<int> v;
  26.     vector< vector<int> > DP;
  27.     int n, q;
  28.     cin>>n>>q;
  29.    
  30.     v.resize(n);
  31.     DP.resize(n+1);
  32.    
  33.     for(int i=0; i<n; i++)
  34.     {
  35.         cin>>v[i];
  36.         v[i] = dar_id(v[i]);
  37.     }
  38.    
  39.     DP[0] = cant;
  40.     for(int i=1; i<=n; i++)
  41.     {
  42.         add( v[i-1] );
  43.         DP[i] = cant;
  44.     }
  45.    
  46.     int a, b;
  47.     vector<int> canta, cantb;
  48.     for(int i=0; i<q; i++)
  49.     {
  50.         cin>>a>>b;
  51.        
  52.         canta = DP[a-1];
  53.         cantb = DP[b];
  54.         int c = 0;
  55.        
  56.         for(int i=0; i<canta.size(); i++)
  57.             cantb[i] -= canta[i];
  58.        
  59.         for(int i=0; i<cantb.size(); i++)
  60.             if (cantb[i] == 2)
  61.                 c++;
  62.                
  63.         cout<<c<<endl;
  64.     }
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment