Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8.
Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
#include <iostream> #include <cstring> using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); unsigned int k; //liczba skrajnie lewych butelek unsigned int n; //liczba butelek unsigned int pom=0;//przechowuje butelk� do usuni�cia unsigned long long czas=0;//zmienna do liczenia czasu cin >> n >> k; unsigned int butelki[n];//marki butelek od lewej unsigned int marki[n+1]; memset(marki, 0, sizeof marki+1); //wyzerowanie element�w tablicy for(unsigned int i=0;i<n; i++) { cin>>butelki[i]; marki[butelki[i]]++;//zliczam ile jest element�w danej marki } //zliczam ile jest marek unsigned int ile_marek=0; for(unsigned int i=0;i<n+1; i++) { if(marki[i]>0) { ile_marek++; } } if(k>ile_marek) cout<<-1; else { //liczenie czasu for(unsigned int i=0;i<k; i++) { //wykreslanie marek kt�re ju� s� w ciagu k elementowym if(marki[butelki[i]]!=0) { marki[butelki[i]]=0; } else//marka ju� wystapi�a w ciagu k elementowym, trzeba szuka� kolejnej liczby w ci�gu by ja na tym miejscu wstawi� { for(unsigned int j=i+1;j<n;j++) //szukam nowej do stawienia marki { if(marki[butelki[j]]!=0) { //wstawiam na i te miejsce i licze czas czas += j-i; pom = butelki[j];//element do przesuniecia w ci�gu //cout<<"czas"<<czas<<" i"<<i<<" j"<<j<<" pom"<<pom<<endl; for (unsigned int k = j; k > i; --k)//przesuwanie butelek { butelki[k] = butelki[k-1]; } butelki[i] = pom; marki[pom]=0; i++; } if(i==k) break; } } } cout<<czas; } /*cout<<"butelki\n"; for(int i=0;i<n; i++) { cout<<butelki[i]<<" ";//zliczam ile jest element�w danej marki } cout<<"\n";*/ 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 | #include <iostream> #include <cstring> using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); unsigned int k; //liczba skrajnie lewych butelek unsigned int n; //liczba butelek unsigned int pom=0;//przechowuje butelk� do usuni�cia unsigned long long czas=0;//zmienna do liczenia czasu cin >> n >> k; unsigned int butelki[n];//marki butelek od lewej unsigned int marki[n+1]; memset(marki, 0, sizeof marki+1); //wyzerowanie element�w tablicy for(unsigned int i=0;i<n; i++) { cin>>butelki[i]; marki[butelki[i]]++;//zliczam ile jest element�w danej marki } //zliczam ile jest marek unsigned int ile_marek=0; for(unsigned int i=0;i<n+1; i++) { if(marki[i]>0) { ile_marek++; } } if(k>ile_marek) cout<<-1; else { //liczenie czasu for(unsigned int i=0;i<k; i++) { //wykreslanie marek kt�re ju� s� w ciagu k elementowym if(marki[butelki[i]]!=0) { marki[butelki[i]]=0; } else//marka ju� wystapi�a w ciagu k elementowym, trzeba szuka� kolejnej liczby w ci�gu by ja na tym miejscu wstawi� { for(unsigned int j=i+1;j<n;j++) //szukam nowej do stawienia marki { if(marki[butelki[j]]!=0) { //wstawiam na i te miejsce i licze czas czas += j-i; pom = butelki[j];//element do przesuniecia w ci�gu //cout<<"czas"<<czas<<" i"<<i<<" j"<<j<<" pom"<<pom<<endl; for (unsigned int k = j; k > i; --k)//przesuwanie butelek { butelki[k] = butelki[k-1]; } butelki[i] = pom; marki[pom]=0; i++; } if(i==k) break; } } } cout<<czas; } /*cout<<"butelki\n"; for(int i=0;i<n; i++) { cout<<butelki[i]<<" ";//zliczam ile jest element�w danej marki } cout<<"\n";*/ return 0; } |