Pagini recente » Cod sursa (job #1429639) | Cod sursa (job #1288687) | Cod sursa (job #444512) | Cod sursa (job #405641) | Cod sursa (job #271121)
Cod sursa(job #271121)
#include <stdio.h>
#define nrJ 50
#define nrP 500
int a[nrJ+2][nrP+1];
int k,p,x,i,max1,max2,pmax1,pmax2,ok,j,aux;
int main(){
FILE *f = fopen("concurs2.in", "r");
FILE *g = fopen("concurs2.out", "w");
fscanf(f,"%d",&p);
for (k=1; k<=p; k++) {
fscanf(f,"%d",&i);
a[i][0]++;
fscanf(f,"%d",&a[i][a[i][0]]);
}
for (i=1; i<=nrJ; i++) {
if (a[i][0])
x++;
a[i][nrJ+1] = 1;
}
fprintf(g,"%d\n",x);
for (i=1; i<=nrJ; i++)
if (a[i][0])
fprintf(g,"%d ",a[i][0]);
fprintf(g,"\n");
for (i=1; i<=nrJ; i++)
if (a[i][0] != 0) {
do {
ok = 0;
for (j=1; j<a[i][0]; j++)
if (a[i][j] > a[i][j+1]) {
aux = a[i][j];
a[i][j] = a[i][j+1];
a[i][j+1] = aux;
ok = 1;
}
} while (ok);
}
for (k=1; k<=p; k+=2) {
max1 = -1;
max2 = -1;
pmax1 = 0;
pmax2 = 0;
for (i=1; i<=nrJ; i++)
if (a[i][0] != 0)
if (a[i][0] > max1) {
pmax2 = pmax1;
max2 = max1;
pmax1 = i;
max1 = a[i][0];
}
else
if (a[i][0] > max2) {
pmax2 = i;
max2 = a[i][0];
}
fprintf(g,"%d %d\n",pmax1,a[pmax1][a[pmax1][nrJ+1]]);
a[pmax1][nrJ+1]++;
a[pmax1][0]--;
if (p != 0) {
fprintf(g,"%d %d\n",pmax2,a[pmax2][a[pmax2][nrJ+1]]);
a[pmax2][nrJ+1]++;
a[pmax2][0]--;
}
}
fclose(f);
fclose(g);
return 0;
}