Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <stack>
  4. #include <vector>
  5. using namespace std;
  6. int main(){
  7.     int Z;
  8.     cin>>Z;
  9.     for(int j=0;j<Z;j++){
  10.         vector<long long> tablica_w_lewo;
  11.         vector<long long>tablica_w_prawo;
  12.         vector<pair<long long,long long>>stos_par;
  13.         vector<pair<long long,long long>>stos_par_2;
  14.         vector<long long> wysokosc;
  15.         pair<long long,long long>para_liczb;
  16.         pair<long long,long long>para_liczb_2;
  17.         long long n;
  18.         cin>>n;
  19.         for(long long i=0; i<n; i++){
  20.             long long a;
  21.             cin>>a;
  22.             wysokosc.push_back(a);
  23.         }
  24.         for(long long k=0; k<n; k++){
  25.              if(k==0){
  26.                 para_liczb.first=wysokosc[k];
  27.                 para_liczb.second=k;
  28.                 stos_par.push_back(para_liczb);
  29.                 tablica_w_prawo.push_back(wysokosc[k]);
  30.             }
  31.              else if(wysokosc[k]>wysokosc[k-1]){
  32.                 para_liczb.first=wysokosc[k];
  33.                 para_liczb.second=k;
  34.                 stos_par.push_back(para_liczb);
  35.                 tablica_w_prawo.push_back(wysokosc[k]);
  36.             }
  37.              else if(wysokosc[k]<=wysokosc[k-1]){
  38.                 while(stos_par.back().first >=wysokosc[k] ){
  39.                     stos_par.pop_back();
  40.                     if(stos_par.empty()==true){break;}
  41.                 }
  42.                 if(stos_par.empty()==true){
  43.                     tablica_w_prawo.push_back(wysokosc[k]*(k+1));
  44.                     para_liczb.first=wysokosc[k];
  45.                     para_liczb.second=0;
  46.                     stos_par.push_back(para_liczb);
  47.                 }
  48.                 else {
  49.                     tablica_w_prawo.push_back(wysokosc[k]*((k-stos_par.back().second)));
  50.                     para_liczb.first=wysokosc[k];
  51.                     para_liczb.second=stos_par.back().second;
  52.                     stos_par.push_back(para_liczb);
  53.  
  54.                 }
  55.             }
  56.         }
  57.         cout<<"liczby od lewej w prawo: ";
  58.         for(long long l=0;l<n;l++){
  59.             cout<<tablica_w_prawo[l]<<" ";
  60.         }
  61.         cout<<endl;
  62.  
  63.         for(long long f=n-1;n>=0;f--){
  64.             if(f==n-1){
  65.                 para_liczb_2.first=wysokosc[f];
  66.                 para_liczb_2.second=f;
  67.                 stos_par_2.push_back(para_liczb_2);
  68.                 tablica_w_lewo.push_back(wysokosc[f]);
  69.  
  70.             }
  71.             else if(wysokosc[f]>wysokosc[f+1]){
  72.                 para_liczb_2.first=wysokosc[f];
  73.                 para_liczb_2.second=f;
  74.                 stos_par_2.push_back(para_liczb);
  75.                 tablica_w_lewo.push_back(wysokosc[f]);
  76.             }
  77.             else if(wysokosc[f+1]>=wysokosc[f]){
  78.                 while(stos_par_2.back().first >wysokosc[f] ){
  79.                     stos_par_2.pop_back();
  80.                     if(stos_par_2.empty()==true){break;}
  81.                 }  
  82.                 if(stos_par.empty()==true){
  83.                     tablica_w_lewo.push_back(wysokosc[f]*(n-f));
  84.                     para_liczb_2.first=wysokosc[f];
  85.                     para_liczb_2.second=n-1;
  86.                     stos_par_2.push_back(para_liczb_2);
  87.                 }
  88.                 else {
  89.                     tablica_w_lewo.push_back(wysokosc[f]*( ( stos_par.back().second-(f) ) ) );
  90.                     para_liczb_2.first=wysokosc[f];
  91.                     para_liczb_2.second=stos_par.back().second;
  92.                     stos_par_2.push_back(para_liczb_2);
  93.  
  94.                 }
  95.            
  96.             }
  97.         }
  98.         cout<<"liczby od prawej w lewo: ";
  99.         for(long long ll=n-1;ll>=0;ll--){
  100.             cout<<tablica_w_lewo[ll]<<" ";
  101.         }
  102.         cout<<endl;
  103.         for(int w=0;w<n;w++)    {
  104.             cout<<"wyniki: "<<tablica_w_lewo[w]+tablica_w_prawo[w]-wysokosc[w]<<endl;
  105.         }
  106.         cout<<endl;
  107.     }      
  108.  
  109.     return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement