Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- int main()
- {
- int n,p,k;
- ifstream f("concert_rock.in");
- f>>n>>p>>k;
- char c;
- int S[n+1]; /// Tablou ce retine scaunele (ude=0 sau curate=1)
- for(int i=1;i<=n;++i) /// Citesc scaunele
- {
- f>>c;
- if(c=='c')
- S[i]=1;
- else
- S[i]=0;
- }
- f.close();
- int MIN=n+1,poz=0,nrsc=0,i; /// nrsc=nr scaune curate
- while(!S[++poz]); /// Merg la primul scaun curat si retin pozitia lui
- i=poz;
- while(i<=n)
- {
- if(S[i])
- {
- ++nrsc;
- if(nrsc==p-k) /// Daca sunt p-k scaune curate
- {
- if(i-poz+1<MIN) /// Daca distanta e mai mica
- MIN=i-poz+1; /// o retinem
- while(!S[++poz]); /// Trecem la urmatorul scaun curat
- --nrsc; /// Pentru ca am trecut la urmatorul svaun curat, unul va fi exclus
- }
- }
- ++i;
- }
- if(MIN<p) /// Daca sunt mai muult de p scaune curate unul dupa altul, atunci distanta minima va fi p
- MIN=p;
- ofstream g("concert_rock.out");
- g<<MIN;
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement