Cod sursa(job #1875403)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 11 februarie 2017 01:14:27
Problema Taramul Nicaieri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <algorithm>
using namespace std;
struct aux{
  int val, poz;
};
bool cmp(aux a, aux b){
  if (a.val == b.val)
    return a.poz > b.poz;
  return a.val > b.val;
}
aux a[105];
int in[105], out[105];
int main(){
  freopen("harta.in", "r", stdin);
  freopen("harta.out", "w", stdout);
  int n, s = 0;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i){
    scanf("%d%d", &in[i], &out[i]);
    s += in[i];
  }
  printf("%d\n", s);
  for (int i = 1; i <= n; ++i){
    if (in[i]){
      for (int j = 1; j <= n; ++j)
      a[j] = {out[j], j};
      sort(a + 1, a + n + 1, cmp);
      for (int j = 1; j <= n && in[i]; ++j)
        if (a[j].poz != i){
          printf("%d %d\n", i, a[j].poz);
          out[a[j].poz]--;
          in[i]--;
        }
    }
  }
  return 0;
}