#include <iostream> #include <vector> #include <utility> using namespace std; class Conference { private: vector<pair<int,int>> Conferences; int N; public: Conference(int n); int GetMostTime(); void QuickSort(int order, int left, int right); }; Conference::Conference(int n) { N = n; for (int i = 0; i < N; i++) { pair<int,int> Temp = make_pair(0, 0); cin >> Temp.first; cin >> Temp.second; Conferences.push_back(Temp); } QuickSort(0, 0, Conferences.size() - 1); for (int i = 0; i < Conferences.size(); i++) { for (int j = i + 1; j < Conferences.size(); j++) { if (Conferences[i].first == Conferences[j].first) continue; else { if (i == j + 1) break; else { QuickSort(1, i, j); break; } } } } for (int i = 0; i < N; i++) cout << Conferences[i].first << " " << Conferences[i].second << endl; } int Conference::GetMostTime() { int MostTime = 0; for (int i = 0; i < Conferences.size(); i++) { int Second = Conferences[i].second; int Time = 1; for (int j = i + 1; j < Conferences.size(); j++) { if (Conferences[i].first == Conferences[j].first) continue; else if (Second <= Conferences[j].first) { Second = Conferences[j].second; Time++; } } if (Time > MostTime) MostTime = Time; } return MostTime; } void Conference::QuickSort(int order, int left, int right) { int i, j, key; pair<int, int> Temp = make_pair(0,0); if (left < right) { i = left + 1; j = right; if(order == 0) key = Conferences[left].first; else key = Conferences[left].second; while (i < j) { if (order == 0) { while (Conferences[i].first < key) { i++; if (i == Conferences.size()) break; } } else { while (Conferences[i].second < key) { i++; if (i == Conferences.size()) break; } } if (order == 0) { while (Conferences[j].first > key) { j--; if (j == 0) break; } } else { while (Conferences[j].second > key) { j--; if (j == 0) break; } } if (order == 0) { if (i < j) { Temp = Conferences[i]; Conferences[i] = Conferences[j]; Conferences[j] = Temp; } } else { if (i < j) { int temp = Conferences[i].second; Conferences[i].second = Conferences[j].second; Conferences[j].second = temp; } } } if (order == 0) { Temp = Conferences[left]; Conferences[left] = Conferences[j]; Conferences[j] = Temp; } else { int temp = Conferences[left].second; Conferences[left].second = Conferences[j].second; Conferences[j].second = temp; } QuickSort(order,left, j - 1); QuickSort(order,j + 1, right); } } int main() { int N; cin >> N; Conference C(N); cout << C.GetMostTime(); }
# include < iostream > # include < vector > # include < string > using namespace std ; int main ( ) { string sInput ; getline ( cin , sInput , '\n' ) ; int Time = 1 ; int Count = 0 ; vector < string > Storage ; for ( int i = 0 ; i < sInput . size ( ) ; i + + ) { for ( int j = 0 ; ( j + Time - 1 ) < sInput . size ( ) ; j + + ) Storage . push_back ( sInput . substr ( j , Time ) ) ; Time + + ; } bool * Visited = new bool [ Storage . size ( ) * sizeof ( bool ) ] ; for ( int i = 0 ; i < Storage . size ( ) ; i + + ) { Visited [ i ] = true ; for ( int j = 0 ; j < Storage . size ( ) ; j + + ) { if ( i ! = j & & Storage [ i ] = = Storage [ j ] ) { Visited [ i ] = false ; Visited [ j ] = true ; break ; } } } for ( int i = 0 ; i < Storage . size ( ) ; i + + ) if ( Visited [ i ] ) Count ...
댓글
댓글 쓰기