Cod sursa(job #1875401)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 11 februarie 2017 01:10:22
Problema Taramul Nicaieri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 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){
    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;
}