Advertisement
AdrianMadajewski

xdsdasdasda

Jan 30th, 2019
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <vector>
  5. #include <array>
  6. #include <climits>
  7.  
  8. using namespace std;
  9.  
  10. int litery(string ruch)
  11. {
  12.     int len = ruch.length();
  13.     int dlugosc = 0;
  14.     int maxdlugosc = -1;
  15.  
  16.     for (int i = 0; i < len - 1; i++)
  17.     {
  18.         if (ruch[i] == 'E' || ruch[i] == 'W')
  19.             dlugosc++;
  20.         else
  21.         {
  22.             if (dlugosc > maxdlugosc)
  23.                 maxdlugosc = dlugosc;
  24.             dlugosc = 0;
  25.         }
  26.     }
  27.     return maxdlugosc;
  28. }
  29.  
  30. int main()
  31. {
  32.     int tab[20][20];
  33.     ifstream plansza("plansza.txt");
  34.  
  35.     for (int i = 0; i < 20; i++)
  36.         for (int j = 0; j < 20; j++)
  37.             plansza >> tab[j][i];
  38.  
  39.     ifstream robot("robot.txt");
  40.     string ruchy[1000] = {""};
  41.     string temp;
  42.  
  43.     for (int i = 0; i < 1000; i++)
  44.     {
  45.         robot >> temp;
  46.         ruchy[i] = temp;
  47.     }
  48.  
  49.  
  50.     // std::cout << ruchy[2];
  51.     int maxwynik = INT_MIN;
  52.     int igracza = 0;
  53.     int dyskw = 0;
  54.  
  55.     int maxlitery = INT_MIN;
  56.     vector<int> gracze;
  57.  
  58.     // std::cout << tab[1][3] << std::endl;
  59.  
  60.     for (int i = 0; i < 1000; i++)
  61.     {
  62.         /* Nowy gracz */
  63.         int wynik = tab[0][0];
  64.         int rx = 0;
  65.         int ry = 0;
  66.  
  67.         int len = ruchy[i].length();
  68.  
  69.         for (int j = 0; j < len; j++)
  70.         {
  71.             char ruch = ruchy[i][j];
  72.  
  73.             switch (ruch)
  74.             {
  75.             case 'N':
  76.                 ry--;
  77.                 break;
  78.             case 'S':
  79.                 ry++;
  80.                 break;
  81.             case 'W':
  82.                 rx--;
  83.                 break;
  84.             case 'E':
  85.                 rx++;
  86.                 break;
  87.             }
  88.  
  89.             /* Kolizja */
  90.             if (rx >= 20 || rx < 0 || ry >= 20 || ry < 0)
  91.             {
  92.                 dyskw++;
  93.                 wynik = -1;
  94.                 break;
  95.             }
  96.             else
  97.                 wynik += tab[ry][rx];
  98.  
  99.         }
  100.  
  101.         /* Najlepszy wynik */
  102.         if (wynik > maxwynik)
  103.         {
  104.             maxwynik = wynik;
  105.             igracza = i + 1;
  106.         }
  107.  
  108.         /* Ciag znakow */
  109.         int litera = litery(ruchy[i]);
  110.         if (litera > maxlitery)
  111.         {
  112.             maxlitery = litera;
  113.             gracze.clear();
  114.         }
  115.         if (litera == maxlitery)
  116.             gracze.push_back(i + 1);
  117.     }
  118.  
  119.     // std::cout << litery("ENEEWENSSESSWSWESWNN");
  120.  
  121.     cout << "dyskwalifikacja: " << dyskw << endl;
  122.     cout << "maxwynik: " << maxwynik << " - gracz: " << igracza << endl;
  123.     for (int i = 0; i < gracze.size(); i++)
  124.     {
  125.         cout << gracze[i] << " ";
  126.     }
  127.     cout << "-> max: " << maxlitery << endl;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement