Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.55 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int mies_A[1000000+10];
  6. int mies_B[1000000+10];
  7.  
  8. int pref_mies_A[1000000+10];
  9. int pref_mies_B[1000000+10];
  10.  
  11.  
  12. int main()
  13. {
  14.     ios_base::sync_with_stdio(0);
  15.     cin.tie(0);
  16.     cout.tie(0);
  17.  
  18.  
  19.  
  20.     int l_mies_A;
  21.     int l_mies_B;
  22.  
  23.     cin>>l_mies_A;
  24.     cin>>l_mies_B;
  25.  
  26.  
  27.     for(int i=0; i<l_mies_A; i++)
  28.         cin>>mies_A[i];
  29.     for(int i=0; i<l_mies_B; i++)
  30.         cin>>mies_B[i];
  31.  
  32.  
  33.     pref_mies_A[0] = mies_A[0];
  34.     pref_mies_B[0] = mies_B[0];
  35.  
  36.  
  37.  
  38.     for(int i=1; i<l_mies_A; i++)
  39.         pref_mies_A[i] = pref_mies_A[i-1] + mies_A[i];
  40.     for(int i=1; i<l_mies_B; i++)
  41.         pref_mies_B[i] = pref_mies_B[i-1] + mies_B[i];
  42.  
  43.  
  44.  
  45.  
  46.     int zap;
  47.     cin>>zap;
  48.  
  49.     int temp_1;
  50.     int temp_2;
  51.     char temp_3;
  52.  
  53.     int liczba_dni;
  54.  
  55.     int pocz;
  56.     int konc;
  57.     int mid;
  58.  
  59.     bool nast = 0;
  60.  
  61.     for(int x=0; x<zap; x++)
  62.     {
  63.         cin>>temp_1;
  64.         cin>>temp_2;
  65.         cin>>temp_3;
  66.  
  67.         if(temp_3 == 'A')
  68.         {
  69.  
  70.             if(temp_2 == 1)
  71.                 liczba_dni = temp_1;
  72.             else
  73.                 liczba_dni = temp_1 + pref_mies_A[temp_2-2];
  74.  
  75.  
  76.             ///BINARY SEARCH
  77.             pocz = 0;
  78.             konc = l_mies_B-1;
  79.             mid = (pocz+konc)/2;
  80.  
  81.             if(liczba_dni < pref_mies_B[0])
  82.                 cout<<liczba_dni<<" "<<1<<endl;
  83.  
  84.             else if(liczba_dni > pref_mies_B[l_mies_B-2])
  85.                 cout<<liczba_dni - pref_mies_B[l_mies_B-2]<<" "<<l_mies_B<<endl;
  86.  
  87.             else
  88.             {
  89.                 do
  90.                 {
  91.                     if(pref_mies_B[mid-1] < liczba_dni && pref_mies_B[mid] >= liczba_dni)
  92.                     {
  93.                     cout<<liczba_dni - pref_mies_B[mid-1]<<" "<<mid+1<<endl;
  94.                     nast=1;
  95.                     }
  96.  
  97.                     else if(pref_mies_B[mid] < liczba_dni)
  98.                     {
  99.                         pocz=mid;
  100.                         mid=(pocz+konc)/2;
  101.                     }
  102.  
  103.                     else
  104.                     {
  105.                         konc=mid;
  106.                         mid=(pocz+konc)/2;
  107.                     }
  108.  
  109.  
  110.  
  111.                 }while(nast==0);
  112.                 nast = 0;
  113.             }
  114.  
  115.  
  116.         }
  117.  
  118.  
  119.  
  120.  
  121.        else
  122.         {
  123.  
  124.             if(temp_2 == 1)
  125.                 liczba_dni = temp_1;
  126.             else
  127.                 liczba_dni = temp_1 + pref_mies_B[temp_2-2];
  128.  
  129.  
  130.             ///BINARY SEARCH
  131.             pocz = 0;
  132.             konc = l_mies_A-1;
  133.             mid = (pocz+konc)/2;
  134.  
  135.             if(liczba_dni < pref_mies_A[0])
  136.                 cout<<liczba_dni<<" "<<1<<endl;
  137.  
  138.             else if(liczba_dni > pref_mies_A[l_mies_A-2])
  139.                 cout<<liczba_dni - pref_mies_A[l_mies_A-2]<<" "<<l_mies_A<<endl;
  140.  
  141.             else
  142.             {
  143.                 do
  144.                 {
  145.                     if(pref_mies_A[mid-1] < liczba_dni && pref_mies_A[mid] >= liczba_dni)
  146.                     {
  147.                     cout<<liczba_dni - pref_mies_A[mid-1]<<" "<<mid+1<<endl;
  148.                     nast=1;
  149.                     }
  150.  
  151.                     else if(pref_mies_A[mid] < liczba_dni)
  152.                     {
  153.                         pocz=mid;
  154.                         mid=(pocz+konc)/2;
  155.                     }
  156.  
  157.                     else
  158.                     {
  159.                         konc=mid;
  160.                         mid=(pocz+konc)/2;
  161.                     }
  162.  
  163.  
  164.  
  165.                 }while(nast==0);
  166.                 nast = 0;
  167.             }
  168.  
  169.  
  170.         }
  171.  
  172.     }
  173.  
  174.  
  175.     return 0;
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement