Cod sursa(job #3142239)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 20 iulie 2023 11:56:38
Problema Taramul Nicaieri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 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;
}

int in[105], out[105];
aux a[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;
}