#include <iostream> #include <vector> using namespace std; void Sprawdz(int i); void PobierzDane(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2,int n); void WyszukajEkstremaNaSzerokosci(int &p, int &k, vector<int> &s1, vector<int> &s2); void SzukajPrzedzialu(vector<int> &kandydaci, vector<int> &s1, vector<int> &s2, int p, int k); void SprawdzajKandydatowNaWysokosci(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2, vector<int>&kandydaci); int main() { ios_base::sync_with_stdio(0); int t; cin>>t; for(int i=0; i<t; i++) { int k; cin>>k; Sprawdz(k); } return 0; } void PobierzDane(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2,int n) { for(int i=0; i<n; i++) { int tmp; cin>>tmp; s1.push_back(tmp); cin>>tmp; s2.push_back(tmp); cin>>tmp; w1.push_back(tmp); cin>>tmp; w2.push_back(tmp); } } void Sprawdz(int i) { vector<int> s1, s2, w1, w2, kandydaci; int l_ekstremum=0; int p_ekstremum=0; PobierzDane(s1,s2,w1,w2,i); WyszukajEkstremaNaSzerokosci(l_ekstremum, p_ekstremum, s1,s2); SzukajPrzedzialu(kandydaci, s1, s2, l_ekstremum, p_ekstremum); SprawdzajKandydatowNaWysokosci(s1,s2,w1,w2,kandydaci); } void WyszukajEkstremaNaSzerokosci(int &p, int &k, vector<int> &s1, vector<int> &s2) { int l_t=s1[0]; int p_t=s2[0]; for(int i=0; i<s1.size(); i++) { if(s1[i]<=l_t) { l_t=s1[i]; } if(s2[i]>=p_t) { p_t=s2[i]; } } p=l_t; k=p_t; } void SzukajPrzedzialu(vector<int> &kandydaci, vector<int> &s1, vector<int> &s2, int p, int k) { for(int i=0; i<s1.size(); i++) { if(s1[i]<=p && s2[i]>=k) { kandydaci.push_back(i); } } } void SprawdzajKandydatowNaWysokosci(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2, vector<int>&kandydaci) { if(kandydaci.size()!=0) { bool czy_znaleziono=1; for(int i=0; i<kandydaci.size(); i++) { czy_znaleziono=1; int kandydat=kandydaci[i]; for(int j=0; j<w1.size(); j++) { if(w1[kandydat]>w1[j] || w2[kandydat]<w2[j]) { czy_znaleziono=0; break; } } if(czy_znaleziono) { cout<<"TAK"<<endl; break; } } if(czy_znaleziono==0) { cout<<"NIE"<<endl; } } else {cout<<"NIE"<<endl;} }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | #include <iostream> #include <vector> using namespace std; void Sprawdz(int i); void PobierzDane(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2,int n); void WyszukajEkstremaNaSzerokosci(int &p, int &k, vector<int> &s1, vector<int> &s2); void SzukajPrzedzialu(vector<int> &kandydaci, vector<int> &s1, vector<int> &s2, int p, int k); void SprawdzajKandydatowNaWysokosci(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2, vector<int>&kandydaci); int main() { ios_base::sync_with_stdio(0); int t; cin>>t; for(int i=0; i<t; i++) { int k; cin>>k; Sprawdz(k); } return 0; } void PobierzDane(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2,int n) { for(int i=0; i<n; i++) { int tmp; cin>>tmp; s1.push_back(tmp); cin>>tmp; s2.push_back(tmp); cin>>tmp; w1.push_back(tmp); cin>>tmp; w2.push_back(tmp); } } void Sprawdz(int i) { vector<int> s1, s2, w1, w2, kandydaci; int l_ekstremum=0; int p_ekstremum=0; PobierzDane(s1,s2,w1,w2,i); WyszukajEkstremaNaSzerokosci(l_ekstremum, p_ekstremum, s1,s2); SzukajPrzedzialu(kandydaci, s1, s2, l_ekstremum, p_ekstremum); SprawdzajKandydatowNaWysokosci(s1,s2,w1,w2,kandydaci); } void WyszukajEkstremaNaSzerokosci(int &p, int &k, vector<int> &s1, vector<int> &s2) { int l_t=s1[0]; int p_t=s2[0]; for(int i=0; i<s1.size(); i++) { if(s1[i]<=l_t) { l_t=s1[i]; } if(s2[i]>=p_t) { p_t=s2[i]; } } p=l_t; k=p_t; } void SzukajPrzedzialu(vector<int> &kandydaci, vector<int> &s1, vector<int> &s2, int p, int k) { for(int i=0; i<s1.size(); i++) { if(s1[i]<=p && s2[i]>=k) { kandydaci.push_back(i); } } } void SprawdzajKandydatowNaWysokosci(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2, vector<int>&kandydaci) { if(kandydaci.size()!=0) { bool czy_znaleziono=1; for(int i=0; i<kandydaci.size(); i++) { czy_znaleziono=1; int kandydat=kandydaci[i]; for(int j=0; j<w1.size(); j++) { if(w1[kandydat]>w1[j] || w2[kandydat]<w2[j]) { czy_znaleziono=0; break; } } if(czy_znaleziono) { cout<<"TAK"<<endl; break; } } if(czy_znaleziono==0) { cout<<"NIE"<<endl; } } else {cout<<"NIE"<<endl;} } |