#include <iostream> #include <list> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { long n, i; long funkcja; double mediana, mediana_pom; long poczatek, koniec, srodek_lewa, srodek_prawa, srodek; long ileMozliwosci=0; long *tab; cin >> n; tab = new long[n]; for(i=0; i<n; i++){ cin >> tab[i]; if(tab[i]==n) { srodek_lewa = i; srodek_prawa = i; } } funkcja = 1+2*n; mediana = (double)(1+n)/2 -0.1; // 0.1 aby porownywanie <= mediany dzialalo pewnie //sprawdzanie poczatku - pokazuje na wyraz, ktory juz nie mozna usunac mediana_pom=mediana; poczatek=0; i=0; while(tab[i]<mediana_pom && i<n){ poczatek++; mediana_pom+=0.5; i++; } //sprawdzanie konca - pokazuje na wyraz, ktory juz nie mozna usunac mediana_pom=mediana; koniec=n-1; i=n-1; while(tab[i]<mediana_pom && i>=0){ koniec--; mediana_pom+=0.5; i--; } // cout << "srodek_prawa przed zmiana: "<<srodek_prawa <<endl; // cout << "sl: "<<srodek_lewa << " po: "<<poczatek << " sp: "<<srodek_prawa <<" koniec: "<<koniec<< " n: "<< n<<endl; if(srodek_lewa<poczatek || srodek_prawa>koniec || poczatek>=koniec){ // cout <<"kuku\n"; // cout << "sl: "<<srodek_lewa << " po: "<<poczatek << " sp: "<<srodek_prawa <<" koniec: "<<koniec<< " n: "<< n<<endl; srodek=0; } else{ //sprawdzanie srodka prawa mediana_pom=mediana; i=srodek_prawa; while(tab[i]>mediana_pom && i<n){ srodek_prawa++; mediana_pom+=0.5; i++; // cout <<"sp++ " << srodek_prawa<<" medpom: "<<mediana_pom<<endl; } //sprawdzenie srodka lewa mediana_pom=mediana; i=srodek_lewa; while(tab[i]>mediana_pom && i>=0){ srodek_lewa--; mediana_pom+=0.5; i--; // cout <<"sl-- " << srodek_lewa<<" medpom: "<<mediana_pom<<endl; } // cout << "srodek_prawa: "<<srodek_prawa << " srodek_lewa: "<< srodek_lewa<<endl; //srodek lewy i prawy to sa pierwsze niemozliwe srodek = srodek_prawa-srodek_lewa-1; } if(poczatek==n) poczatek--; koniec = n-koniec-1; // ile na koncu if(koniec==n) koniec--; // cout << "poczatek: "<< poczatek << " koniec: "<< koniec << " srodek: "<< srodek << endl; ileMozliwosci = (poczatek+1)*(koniec+1) ; if(poczatek+koniec+srodek>n) srodek = n-poczatek-koniec; ileMozliwosci+=srodek; if(n==1) cout << funkcja << " 1"<<endl; else cout << funkcja << " " << ileMozliwosci << endl; delete tab; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | #include <iostream> #include <list> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { long n, i; long funkcja; double mediana, mediana_pom; long poczatek, koniec, srodek_lewa, srodek_prawa, srodek; long ileMozliwosci=0; long *tab; cin >> n; tab = new long[n]; for(i=0; i<n; i++){ cin >> tab[i]; if(tab[i]==n) { srodek_lewa = i; srodek_prawa = i; } } funkcja = 1+2*n; mediana = (double)(1+n)/2 -0.1; // 0.1 aby porownywanie <= mediany dzialalo pewnie //sprawdzanie poczatku - pokazuje na wyraz, ktory juz nie mozna usunac mediana_pom=mediana; poczatek=0; i=0; while(tab[i]<mediana_pom && i<n){ poczatek++; mediana_pom+=0.5; i++; } //sprawdzanie konca - pokazuje na wyraz, ktory juz nie mozna usunac mediana_pom=mediana; koniec=n-1; i=n-1; while(tab[i]<mediana_pom && i>=0){ koniec--; mediana_pom+=0.5; i--; } // cout << "srodek_prawa przed zmiana: "<<srodek_prawa <<endl; // cout << "sl: "<<srodek_lewa << " po: "<<poczatek << " sp: "<<srodek_prawa <<" koniec: "<<koniec<< " n: "<< n<<endl; if(srodek_lewa<poczatek || srodek_prawa>koniec || poczatek>=koniec){ // cout <<"kuku\n"; // cout << "sl: "<<srodek_lewa << " po: "<<poczatek << " sp: "<<srodek_prawa <<" koniec: "<<koniec<< " n: "<< n<<endl; srodek=0; } else{ //sprawdzanie srodka prawa mediana_pom=mediana; i=srodek_prawa; while(tab[i]>mediana_pom && i<n){ srodek_prawa++; mediana_pom+=0.5; i++; // cout <<"sp++ " << srodek_prawa<<" medpom: "<<mediana_pom<<endl; } //sprawdzenie srodka lewa mediana_pom=mediana; i=srodek_lewa; while(tab[i]>mediana_pom && i>=0){ srodek_lewa--; mediana_pom+=0.5; i--; // cout <<"sl-- " << srodek_lewa<<" medpom: "<<mediana_pom<<endl; } // cout << "srodek_prawa: "<<srodek_prawa << " srodek_lewa: "<< srodek_lewa<<endl; //srodek lewy i prawy to sa pierwsze niemozliwe srodek = srodek_prawa-srodek_lewa-1; } if(poczatek==n) poczatek--; koniec = n-koniec-1; // ile na koncu if(koniec==n) koniec--; // cout << "poczatek: "<< poczatek << " koniec: "<< koniec << " srodek: "<< srodek << endl; ileMozliwosci = (poczatek+1)*(koniec+1) ; if(poczatek+koniec+srodek>n) srodek = n-poczatek-koniec; ileMozliwosci+=srodek; if(n==1) cout << funkcja << " 1"<<endl; else cout << funkcja << " " << ileMozliwosci << endl; delete tab; return 0; } |