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; } |
English