Advertisement
Korotkodul

ЕГЭ. Стратегия

Sep 7th, 2022 (edited)
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. #include <string>
  7. #include <stack>
  8. #include <set>
  9. #include <map>
  10. #define pii pair <int,int>
  11. #define vec vector
  12. using namespace std;
  13. using ll = long long;
  14. using ld = long double;
  15. using db = double;
  16. void cv(vector <int> &v){
  17.     for (auto x: v) cout<<x<<' ';
  18.     cout<<"\n";
  19. }
  20.  
  21. void cvl(vector <ll> &v){
  22.     for (auto x: v) cout<<x<<' ';
  23.     cout<<"\n";
  24. }
  25.  
  26.  
  27. void cvv(vector <vector <int> > &v){
  28.     for (auto x: v) cv(x);
  29.     cout<<"\n";
  30. }
  31.  
  32. void cvb(vector <bool> v){
  33.     for (bool x: v) cout<<x<<' ';
  34.     cout<<"\n";
  35. }
  36.  
  37. void cvs(vector <string>  v){
  38.     for (auto a: v){
  39.         cout<<a<<"\n";
  40.     }
  41. }
  42.  
  43. void cvp(vector <pii> a){
  44.     for (auto p: a){
  45.         cout<<p.first<<' '<<p.second<<"\n";
  46.     }
  47.     cout<<"\n";
  48. }
  49.  
  50. int Sum(pii p){
  51.     return p.first + p.second;
  52. }
  53.  
  54. pii fmax(pii p){
  55.     pii a,b;
  56.     a = {p.first*2, p.second};
  57.     b = {p.first, p.second*3};
  58.     if (Sum(a) > Sum(b)){
  59.         swap(a,b);
  60.     }
  61.     return b;
  62. }
  63.  
  64. pii fmin(pii p){
  65.     pii a = {p.first + 1, p.second}, b = {p.first, p.second + 1};
  66.     if (Sum(fmax(a)) > Sum(fmax(b))){
  67.         swap(a,b);
  68.     }
  69.     return a;
  70. }
  71.  
  72.  
  73.  
  74. int main()
  75. {
  76.     ios::sync_with_stdio(0);
  77.     cin.tie(0);
  78.     cout.tie(0);
  79.     vector <vector <int> > var = {{0,0},  {1,0}, {0,1}, {1,1}};
  80.     int ans=100;
  81.     pii p;
  82.     for (int s=1;s<=67;++s){
  83.         p = {16,s};
  84.         vector <bool> win;
  85.         for (auto v: var){
  86.             for (int i: v){
  87.                 if (i==1){
  88.                     p = fmax(p);
  89.                 }
  90.                 else{
  91.                     p = fmin(p);
  92.                 }
  93.             }
  94.  
  95.             if (Sum(fmax(p)) < 84){
  96.                 p = fmin(p);
  97.                 p = fmax(p);
  98.                 if (Sum(p) >= 84){
  99.                     win.push_back(1);
  100.                 }
  101.                 else{
  102.                     win.push_back(0);
  103.                 }
  104.             }
  105.             else{
  106.                 win.push_back(0);
  107.             }
  108.         }
  109.         bool can = (win[0] || win[1]) && (win[2] || win[3]);
  110.         if (can){
  111.             ans=s;
  112.             break;
  113.         }
  114.     }
  115.     cout<<ans;
  116. }
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement