#include #define InFile "afise.in" #define OutFile "afise.out" #define Max 1001 using namespace std; struct Afis { int bed, alb; }; Afis S[Max]; int L, N, K, M; int Viz[Max]; void Read() { int x, bed, alb, i; ifstream in(InFile); in>>L>>N>>K; for(i=1; i<=N; i++) { in>>x; Viz[x]=1; } // marcate zonele ce trebuie acoperite in.close(); i=1; bed = alb = 0; while(!Viz[i] && i<=L) i++; while(i <= L) { while(Viz[i] && i<=L) { bed++; i++; } while(!Viz[i] && i<=L) { alb++; i++; } // determin lungimea zonelor rele urmate de zone ok M++; S[M].bed = bed; S[M].alb = alb; bed = alb = 0; } M--; } // ordonare crescatoare dupa zonele ok int poz(int p, int u) { int st, dr; st = p; dr=u; Afis aux=S[p]; while(st < dr) { while(st= S[st].alb) st++; S[dr]=S[st]; } S[st]=aux; return st; } void Quik(int p, int u) { int m=poz(p,u); if(pK) { i = 1; while(nK>K && i<=M) { St += S[i].alb; i++; nK--; } // folosesc spatiile albe pentru a reduce numarul de panouri } out<