Facebook
From Flying Moth, 6 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 287
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int findNextR(int l, int size, long int *arr) {
  7.         for (int i = l; i < size; ++i) {
  8.                 if (arr[i] < 0)
  9.                         return i;
  10.         }
  11.         return size - 1;
  12. }
  13.  
  14. int partition(int l, int r, long int *arr) {
  15.         long pivot = arr[(l + r) / 2];
  16.         while (l <= r) {
  17.                 while (arr[r] > pivot)
  18.                         r--;
  19.                 while (arr[l] < pivot)
  20.                         l++;
  21.                 if (l <= r) {
  22.                         long tmp = arr[r];
  23.                         arr[r] = arr[l];
  24.                         arr[l] = tmp;
  25.                         l++;
  26.                         r--;
  27.                 }
  28.         }
  29.         return l;
  30. }
  31. void quickSort(int size, long int *arr) {
  32.         int l = 0;
  33.         int r = size - 1;
  34.         int q, i = 0;
  35.         int tmpr = r;
  36.         while (true) {
  37.                 i--;
  38.                 while (l < tmpr) {
  39.                         q = partition(l, tmpr, arr);
  40.                         arr[tmpr] = -arr[tmpr];
  41.                         tmpr = q - 1;
  42.                         ++i;
  43.                 }
  44.                 if (i < 0)
  45.                         break;
  46.                 l++;
  47.                 tmpr = findNextR(l, size, arr);
  48.                 arr[tmpr] = -arr[tmpr];
  49.         }
  50. }
  51.  
  52. /**
  53. * Zapis do pliku
  54. * @param sName oryginalna nazwa pliku tekstowego
  55. * @param iAmount ilość szukanych elementów
  56. * @param liValue wartość której ilość jest szukana
  57. */
  58. void vfun_SaveToFile(const string &sName, const int &iAmount, const long int &liValue) {
  59.         ofstream outFile;
  60.         outFile.open(sName, ios::app);
  61.         outFile << endl << liValue << " " << iAmount;
  62.         outFile.close();
  63. }
  64.  
  65.  
  66.  
  67. /**
  68. * Szukanie pliku, sprawdzanie czy jest z rozszerzeniem .txt, dopisywaie .txt
  69. * @param sName oryginalna nazwa pliku tekstowego
  70. * @param fsFile nazwa którą nadaliśmy plikowi
  71. * @return true gdy znaleziono plik
  72. * @return false gdy nie znaleziono pliku
  73. */
  74. bool bfun_OpenFile(string &sName, ifstream &fsFile) {
  75.         try {
  76.                 if (sName.find(".txt") != string::npos) {
  77.                         fsFile.open(sName.c_str());
  78.                 }
  79.                 else {
  80.                         sName += ".txt";
  81.                         fsFile.open(sName.c_str());
  82.                 }
  83.  
  84.                 if (!fsFile) {
  85.                         throw "!";
  86.                 }
  87.         }
  88.         catch (char *cError) {
  89.                 fsFile.clear();
  90.                 cout << cError;
  91.                 return false;
  92.         }
  93.  
  94.         return true;
  95. }
  96.  
  97.  
  98. int main() {
  99.         int size;
  100.         cin >> size;
  101.         long int *arr = new long int[size];
  102.  
  103.         string sName;
  104.         ifstream fsFile;
  105.         int iSetsNumber, j = 0;
  106.  
  107.         do {
  108.                 cin >> sName;
  109.         } while (!bfun_OpenFile(sName, fsFile));
  110.  
  111.         fsFile >> iSetsNumber;
  112.  
  113.         while (j < iSetsNumber) {
  114.                
  115.  
  116.  
  117.                 j++;
  118.         }
  119.  
  120.  
  121.         fsFile.close();
  122.         return 0;
  123. }