#include #include using namespace std; int findNextR(int l, int size, long int *arr) { for (int i = l; i < size; ++i) { if (arr[i] < 0) return i; } return size - 1; } int partition(int l, int r, long int *arr) { long pivot = arr[(l + r) / 2]; while (l <= r) { while (arr[r] > pivot) r--; while (arr[l] < pivot) l++; if (l <= r) { long tmp = arr[r]; arr[r] = arr[l]; arr[l] = tmp; l++; r--; } } return l; } void quickSort(int size, long int *arr) { int l = 0; int r = size - 1; int q, i = 0; int tmpr = r; while (true) { i--; while (l < tmpr) { q = partition(l, tmpr, arr); arr[tmpr] = -arr[tmpr]; tmpr = q - 1; ++i; } if (i < 0) break; l++; tmpr = findNextR(l, size, arr); arr[tmpr] = -arr[tmpr]; } } /** * Zapis do pliku * @param sName oryginalna nazwa pliku tekstowego * @param iAmount ilość szukanych elementów * @param liValue wartość której ilość jest szukana */ void vfun_SaveToFile(const string &sName, const int &iAmount, const long int &liValue) { ofstream outFile; outFile.open(sName, ios::app); outFile << endl << liValue << " " << iAmount; outFile.close(); } /** * Szukanie pliku, sprawdzanie czy jest z rozszerzeniem .txt, dopisywaie .txt * @param sName oryginalna nazwa pliku tekstowego * @param fsFile nazwa którą nadaliśmy plikowi * @return true gdy znaleziono plik * @return false gdy nie znaleziono pliku */ bool bfun_OpenFile(string &sName, ifstream &fsFile) { try { if (sName.find(".txt") != string::npos) { fsFile.open(sName.c_str()); } else { sName += ".txt"; fsFile.open(sName.c_str()); } if (!fsFile) { throw "!"; } } catch (char *cError) { fsFile.clear(); cout << cError; return false; } return true; } int main() { int size; cin >> size; long int *arr = new long int[size]; string sName; ifstream fsFile; int iSetsNumber, j = 0; do { cin >> sName; } while (!bfun_OpenFile(sName, fsFile)); fsFile >> iSetsNumber; while (j < iSetsNumber) { j++; } fsFile.close(); return 0; }