37
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 6 struct A { 7 int v; 8 A() { } 9 A(int n):v(n) { }; 10 bool operator<(const A & a) const { 11 return v < a.v; 12 } 13 }; 14 template <class T> 15 struct FilterClass{ 16 T m,n; 17 FilterClass(T _m,T _n):m(_m),n(_n){} 18 bool operator()(T p){ 19 if(p < n && m < p) 20 return true; 21 return false; 22 } 23 }; 24 25 template <class T> 26 void Print(T s,T e) 27 { 28 for(;s!=e; ++s) 29 cout << *s << ","; 30 cout << endl; 31 } 32 template <class T1, class T2,class T3> 33 T2 Filter( T1 s,T1 e, T2 s2, T3 op) 34 { 35 for(;s != e; ++s) { 36 if( op(*s)) { 37 * s2 = * s; 38 ++s2; 39 } 40 } 41 return s2; 42 } 43 44 ostream & operator <<(ostream & o,A & a) 45 { 46 o << a.v; 47 return o; 48 } 49 vector<int> ia; 50 vector<A> aa; 51 int main() 52 { 53 int m,n; 54 while(cin >> m >> n) { 55 ia.clear(); 56 aa.clear(); 57 int k,tmp; 58 cin >> k; 59 for(int i = 0;i < k; ++i) { 60 cin >> tmp; 61 ia.push_back(tmp); 62 aa.push_back(tmp); 63 } 64 vector<int> ib(k); 65 vector<A> ab(k); 66 vector<int>::iterator p = Filter(ia.begin(),ia.end(),ib.begin(),FilterClass<int>(m,n)); 67 Print(ib.begin(),p); 68 vector<A>::iterator pp = Filter(aa.begin(),aa.end(),ab.begin(),FilterClass<A>(m,n)); 69 Print(ab.begin(),pp); 70 71 } 72 return 0; 73 }