Pagini recente » Cod sursa (job #1392672) | Cod sursa (job #2566109) | Cod sursa (job #1822932) | Cod sursa (job #2407777) | Cod sursa (job #654305)
Cod sursa(job #654305)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <queue>
#define FISIN "numar2.in"
#define FISOUT "numar2.out"
#define MAXN 100
struct Multiple {
long long prod;
int fact;
bool operator<(const Multiple& m) const { return prod > m.prod; }
Multiple(long long p, int f) : prod(p), fact(f) { }
};
int a[MAXN];
int n, m;
int main() {
FILE *fin = fopen(FISIN, "rt");
FILE *fout = fopen(FISOUT, "wt");
std::priority_queue<Multiple> heap;
fscanf(fin, "%d %d", &n, &m);
for (int i = 0; i < n; ++i) {
fscanf(fin, "%d", a + i);
heap.push(Multiple(a[i], a[i]));
}
long long last_popped = -1;
for (int i = 1; i <= m; ++i) {
Multiple m = heap.top();
heap.pop();
if (m.prod == last_popped) --i;
last_popped = m.prod;
heap.push(Multiple(last_popped + m.fact, m.fact));
}
fprintf(fout, "%lld\n", last_popped);
fclose(fout);
fclose(fin);
return 0;
}