Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <stack>
- #include <vector>
- using namespace std;
- int main(){
- int Z;
- cin>>Z;
- for(int j=0;j<Z;j++){
- vector<long long> tablica_w_lewo;
- vector<long long>tablica_w_prawo;
- vector<pair<long long,long long>>stos_par;
- vector<pair<long long,long long>>stos_par_2;
- vector<long long> wysokosc;
- pair<long long,long long>para_liczb;
- pair<long long,long long>para_liczb_2;
- long long n;
- cin>>n;
- for(long long i=0; i<n; i++){
- long long a;
- cin>>a;
- wysokosc.push_back(a);
- }
- for(long long k=0; k<n; k++){
- if(k==0){
- para_liczb.first=wysokosc[k];
- para_liczb.second=k;
- stos_par.push_back(para_liczb);
- tablica_w_prawo.push_back(wysokosc[k]);
- }
- else if(wysokosc[k]>wysokosc[k-1]){
- para_liczb.first=wysokosc[k];
- para_liczb.second=k;
- stos_par.push_back(para_liczb);
- tablica_w_prawo.push_back(wysokosc[k]);
- }
- else if(wysokosc[k]<=wysokosc[k-1]){
- while(stos_par.back().first >=wysokosc[k] ){
- stos_par.pop_back();
- if(stos_par.empty()==true){break;}
- }
- if(stos_par.empty()==true){
- tablica_w_prawo.push_back(wysokosc[k]*(k+1));
- para_liczb.first=wysokosc[k];
- para_liczb.second=0;
- stos_par.push_back(para_liczb);
- }
- else {
- tablica_w_prawo.push_back(wysokosc[k]*((k-stos_par.back().second)));
- para_liczb.first=wysokosc[k];
- para_liczb.second=stos_par.back().second;
- stos_par.push_back(para_liczb);
- }
- }
- }
- cout<<"liczby od lewej w prawo: ";
- for(long long l=0;l<n;l++){
- cout<<tablica_w_prawo[l]<<" ";
- }
- cout<<endl;
- for(long long f=n-1;n>=0;f--){
- if(f==n-1){
- para_liczb_2.first=wysokosc[f];
- para_liczb_2.second=f;
- stos_par_2.push_back(para_liczb_2);
- tablica_w_lewo.push_back(wysokosc[f]);
- }
- else if(wysokosc[f]>wysokosc[f+1]){
- para_liczb_2.first=wysokosc[f];
- para_liczb_2.second=f;
- stos_par_2.push_back(para_liczb);
- tablica_w_lewo.push_back(wysokosc[f]);
- }
- else if(wysokosc[f+1]>=wysokosc[f]){
- while(stos_par_2.back().first >wysokosc[f] ){
- stos_par_2.pop_back();
- if(stos_par_2.empty()==true){break;}
- }
- if(stos_par.empty()==true){
- tablica_w_lewo.push_back(wysokosc[f]*(n-f));
- para_liczb_2.first=wysokosc[f];
- para_liczb_2.second=n-1;
- stos_par_2.push_back(para_liczb_2);
- }
- else {
- tablica_w_lewo.push_back(wysokosc[f]*( ( stos_par.back().second-(f) ) ) );
- para_liczb_2.first=wysokosc[f];
- para_liczb_2.second=stos_par.back().second;
- stos_par_2.push_back(para_liczb_2);
- }
- }
- }
- cout<<"liczby od prawej w lewo: ";
- for(long long ll=n-1;ll>=0;ll--){
- cout<<tablica_w_lewo[ll]<<" ";
- }
- cout<<endl;
- for(int w=0;w<n;w++) {
- cout<<"wyniki: "<<tablica_w_lewo[w]+tablica_w_prawo[w]-wysokosc[w]<<endl;
- }
- cout<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement