Pagini recente » Cod sursa (job #1709818) | Cod sursa (job #2556339) | Cod sursa (job #1636121) | Cod sursa (job #29892) | Cod sursa (job #299761)
Cod sursa(job #299761)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmpl(const void *a, const void *b) {
long d;
d = *((long*)a) - *((long*)b);
if(d < 0)
return -1;
if(d > 0)
return 1;
return 0;
}
int main() {
int n, i, sc, j, k;
char *p;
long *v;
long *s;
FILE *f;
f = fopen("economie.in", "r");
fscanf(f, "%d", &n);
v = (long*)malloc(n * sizeof(long));
s = (long*)malloc(n * sizeof(long));
for(i = 0; i < n; i++)
fscanf(f, "%ld", &v[i]);
fclose(f);
qsort(v, n, sizeof(long), cmpl);
for(i = 0; i < n; i++)
printf("%ld ", v[i]);
printf("\n");
p = (char*)malloc(v[n - 1] * sizeof(char));
bzero(p, v[n - 1] * sizeof(char));
i = sc = 0;
j = v[0];
while(i < n) {
for(k = 0; k < sc; k++)
if(p[j - s[k]] == 1) {
p[j] = 1;
break;
}
if(v[i] == j) {
if(p[j] == 0) {
s[sc++] = j;
p[j] = 1;
}
while(v[++i] == j && i < n);
}
j++;
}
f = fopen("economie.out", "w");
fprintf(f, "%d\n", sc);
for(i = 0; i < sc; i++)
fprintf(f, "%ld\n", s[i]);
fclose(f);
free(p);
free(s);
free(v);
return 0;
}