Pagini recente » Cod sursa (job #2686070) | Cod sursa (job #890092) | Profil MihaelaCismaru | Cod sursa (job #3226593) | Cod sursa (job #541724)
Cod sursa(job #541724)
#include <fstream>
#include <queue>
#define nmax 25
using namespace std;
ifstream in("light2.in");
ofstream out("light2.out");
long long D[nmax];
int V[nmax];
short K;
bool unu;
class cmp
{
public:
inline bool operator()(short a,short b){return D[a]>D[b];}
};
priority_queue<int,vector<int> ,cmp>H;
long long calculeaza(long long N)
{
short i;
//initializare
for(i=1;i<=K;i++)if(V[i]>3){D[i]=V[i],H.push(i);}
if(H.empty())return 0;
unsigned int nr=0,n_bec=0,nr_ant=0,p;
bool aprins=0;
while(nr<=N)
{
p=H.top();
H.pop();
nr=D[p];
if(nr>N)continue;
D[p]+=V[p];
H.push(p);
if(nr_ant==nr&&aprins)
--n_bec,aprins=0;
else if(nr_ant==nr&&!aprins)
++n_bec,aprins=1;
else ++n_bec,aprins=1;
nr_ant=nr;
}
return n_bec;
}
int main()
{
long long N;
int i,j;
in>>N>>K;
for(i=1;i<=K;i++)
{
in>>V[i];
for(j=i-1;j;--j)
if(V[j]==V[i])V[j]=-1,V[i]=-1;
}
out<<calculeaza(N);
return 0;
}