Advertisement
a53

concert_rock

a53
Feb 25th, 2018
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int n,p,k;
  7. ifstream f("concert_rock.in");
  8. f>>n>>p>>k;
  9. char c;
  10. int S[n+1]; /// Tablou ce retine scaunele (ude=0 sau curate=1)
  11. for(int i=1;i<=n;++i) /// Citesc scaunele
  12. {
  13. f>>c;
  14. if(c=='c')
  15. S[i]=1;
  16. else
  17. S[i]=0;
  18. }
  19. f.close();
  20. int MIN=n+1,poz=0,nrsc=0,i; /// nrsc=nr scaune curate
  21. while(!S[++poz]); /// Merg la primul scaun curat si retin pozitia lui
  22. i=poz;
  23. while(i<=n)
  24. {
  25. if(S[i])
  26. {
  27. ++nrsc;
  28. if(nrsc==p-k) /// Daca sunt p-k scaune curate
  29. {
  30. if(i-poz+1<MIN) /// Daca distanta e mai mica
  31. MIN=i-poz+1; /// o retinem
  32. while(!S[++poz]); /// Trecem la urmatorul scaun curat
  33. --nrsc; /// Pentru ca am trecut la urmatorul svaun curat, unul va fi exclus
  34. }
  35. }
  36. ++i;
  37. }
  38. if(MIN<p) /// Daca sunt mai muult de p scaune curate unul dupa altul, atunci distanta minima va fi p
  39. MIN=p;
  40. ofstream g("concert_rock.out");
  41. g<<MIN;
  42. g.close();
  43. return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement