Pagini recente » Cod sursa (job #752762) | Cod sursa (job #1517795) | Cod sursa (job #2298557) | Cod sursa (job #1866211) | Cod sursa (job #184785)
Cod sursa(job #184785)
#include<cstdio>
#include<cstdlib>
int gi[101],ge[101],ordi[101],orde[101],i,j,n,y,x,m;
int cmpe(const void *a,const void *b)
{
return ge[*(int*)b]-ge[*(int*)a];
}
int cmpi(const void *a,const void *b)
{
return gi[*(int*)b]-gi[*(int*)a];
}
int main()
{
freopen("harta.in","r",stdin);
freopen("harta.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&gi[i],&ge[i]);
ordi[i]=i;
orde[i]=i;
m+=gi[i];
}
printf("%d\n",m);
qsort(orde+1,n,sizeof(int),cmpe);
for(i=1;i<=n;i++)
if(ge[orde[i]]==0)
break;
else
{
x=orde[i];
qsort(ordi+1,n,sizeof(int),cmpi);
for(j=1;j<=ge[x];j++)
{
y=ordi[j];
if(y==x)
{
ge[x]++;
continue;
}
printf("%d %d\n",x,y);
gi[y]--;
}
}
fclose(stdout);
return 0;
}