#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int ilosc; int sumka = 1; int poczatek = 0;
cin >> ilosc; int tab[ilosc]; int kolejnosc[ilosc];
int ile_waznych = 1;
for (int i =0; i < ilosc; i++)
{
cin >> tab[i];
kolejnosc[tab[i]-1] = i;
}
int dlugosc_przedzialu = 1; int lewa_granica ; int prawa_granica; int wlasciwa_granica;
int wskaznik1 = kolejnosc[ilosc-1]; int wskaznik2 = kolejnosc[ilosc-1]; int suwak = ilosc-1;
for (int i = 1; i < ilosc; i++)
{
if(i%2==1)
{
ile_waznych +=1;
suwak -=1;
if (wskaznik2 < kolejnosc[suwak])
{
wskaznik2 = kolejnosc[suwak];
}
else if (wskaznik1 > kolejnosc[suwak])
{
wskaznik1 = kolejnosc[suwak];
}
dlugosc_przedzialu = wskaznik2-wskaznik1+1;
lewa_granica =wskaznik1+1;
prawa_granica = ilosc-wskaznik2;
}
if(lewa_granica>ilosc-i)
{
lewa_granica = ilosc - i ;
}
if(prawa_granica>ilosc-i)
{
prawa_granica = ilosc - i ;
}
wlasciwa_granica = min(lewa_granica,prawa_granica);
int przedzial = 2*(i+1-dlugosc_przedzialu);
if(przedzial > 0)
{
sumka += min(wlasciwa_granica,przedzial);
}
else if(przedzial==0)
{
sumka +=1;
}
}
cout << 2*ilosc+1 << " " << sumka;
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 | #include <iostream> #include <algorithm> using namespace std; int main() { int ilosc; int sumka = 1; int poczatek = 0; cin >> ilosc; int tab[ilosc]; int kolejnosc[ilosc]; int ile_waznych = 1; for (int i =0; i < ilosc; i++) { cin >> tab[i]; kolejnosc[tab[i]-1] = i; } int dlugosc_przedzialu = 1; int lewa_granica ; int prawa_granica; int wlasciwa_granica; int wskaznik1 = kolejnosc[ilosc-1]; int wskaznik2 = kolejnosc[ilosc-1]; int suwak = ilosc-1; for (int i = 1; i < ilosc; i++) { if(i%2==1) { ile_waznych +=1; suwak -=1; if (wskaznik2 < kolejnosc[suwak]) { wskaznik2 = kolejnosc[suwak]; } else if (wskaznik1 > kolejnosc[suwak]) { wskaznik1 = kolejnosc[suwak]; } dlugosc_przedzialu = wskaznik2-wskaznik1+1; lewa_granica =wskaznik1+1; prawa_granica = ilosc-wskaznik2; } if(lewa_granica>ilosc-i) { lewa_granica = ilosc - i ; } if(prawa_granica>ilosc-i) { prawa_granica = ilosc - i ; } wlasciwa_granica = min(lewa_granica,prawa_granica); int przedzial = 2*(i+1-dlugosc_przedzialu); if(przedzial > 0) { sumka += min(wlasciwa_granica,przedzial); } else if(przedzial==0) { sumka +=1; } } cout << 2*ilosc+1 << " " << sumka; return 0; } |
English