Advertisement
PedalaVasile

numere

Dec 20th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. ifstream fin("numere.in");
  8. ofstream fout("numere.out");
  9.  
  10. vector < vector < int > > v;
  11. vector < vector < int > > suma;
  12.  
  13. int cerinta;
  14. int n, baza, k, intervale;
  15.  
  16. vector < int > adunare(vector < int > a, vector < int > b)
  17. {
  18.     vector < int > c;
  19.  
  20.     int as = a.size();
  21.     int bs = b.size();
  22.  
  23.     c.resize( as + bs - 1);
  24.  
  25.     if(as > bs)
  26.     {
  27.         swap(a, b);
  28.         swap(as, bs);
  29.     }
  30.  
  31.     for(int i = 0; i < as; i++)
  32.         c[i] = a[i] + b[i];
  33.  
  34.     int t = 0;
  35.  
  36.     for(int i = 0; i < bs; i++)
  37.     {
  38.         t += c[i];
  39.         c[i] = t % baza;
  40.         t /= baza;
  41.     }
  42.  
  43.     while(t)
  44.     {
  45.         c.push_back(t % baza);
  46.         t /= baza;
  47.     }
  48.  
  49.     return c;
  50. }
  51.  
  52. vector < int > creeaza_nr(string s)
  53. {
  54.     int len = s.length();
  55.  
  56.     vector < int > v;
  57.  
  58.     v.resize(len);
  59.  
  60.     for(int i = 0; i < len; i++)
  61.         v[i] = (s[i] - 'A') % baza;
  62.  
  63.     return v;
  64. }
  65.  
  66. int comparare(vector < int > a, vector < int > b)
  67. {
  68.     ///  0 -> a == b
  69.     ///  1 -> a > b
  70.     /// -1 -> a < b
  71.  
  72.     if(a.size() > b.size())
  73.         return 1;
  74.     else if(a.size() < b.size())
  75.         return -1;
  76.     else
  77.     {
  78.         for(int i = 0; i < a.size(); i++)
  79.             if(a[i] > b[i])
  80.                 return 1;
  81.             else if(a[i] < b[i])
  82.                 return -1;
  83.     }
  84.  
  85.     return 0;
  86. }
  87.  
  88. int main()
  89. {
  90.     fin >> cerinta;
  91.  
  92.     fin >> n >> baza >> k >> intervale;
  93.  
  94.     v.resize(n);
  95.  
  96.     string s;
  97.  
  98.     for(int i = 0; i < n; i++)
  99.     {
  100.         fin >> s;
  101.  
  102.         v[i] = creeaza_nr(s);
  103.     }
  104.  
  105.     if(cerinta == 1)
  106.     {
  107.  
  108.     }
  109.     else if(cerinta == 2)
  110.     {
  111.         vector < int > minim;
  112.  
  113.         minim.resize(30);
  114.  
  115.         for(int i = 0; i < n - k; i++)
  116.         {
  117.             vector < int > s;
  118.  
  119.             s.push_back(0);
  120.  
  121.             for(int j = i; j < i + k; j++)
  122.                 s = suma(s, v[j]);
  123.  
  124.             if(comparare(minim, s) == 1)
  125.                 minim = s;
  126.         }
  127.  
  128.     +
  129.  
  130.  
  131.     }
  132.     else if(cerinta == 3)
  133.     {
  134.         for(int i = 1; i < n; i++)
  135.             v[i] = adunare(v[i], v[i - 1]);
  136.  
  137.     }
  138.  
  139.  
  140.     return 0;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement