Cod sursa(job #279967)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 13 martie 2009 09:42:00
Problema Taramul Nicaieri Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <stdio.h>
#include <stdlib.h>
int n,m,i,j,ind[101],a[101],b[101];
int comp(const void *n1,const void *n2){
  return (b[*((int*)n1)]-b[*((int*)n2)]);
}
int main(){
  freopen("harta.in","r",stdin); freopen("harta.out","w",stdout);
  scanf("%d",&n);
  for (i=1;i<=n;++i){scanf("%d %d",&a[i],&b[i]);m+=a[i];ind[i]=i;}
  printf("%d\n",m);
  qsort(ind+1,n,sizeof(int),comp);
  j=1;
  while (j<=n){
    for (i=n;i&&a[ind[j]];--i)
      if (i!=j){
        b[ind[i]]--;a[ind[j]]--;
        printf("%d %d\n",ind[j],ind[i]);
      }
    if (a[ind[j]]==0)j++;
  }
return 0;
}