Cod sursa(job #2213879)

Utilizator felixiPuscasu Felix felixi Data 17 iunie 2018 19:38:33
Problema Taramul Nicaieri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("harta.in");
ofstream out("harta.out");

const int NMAX = 100;

int a[NMAX+2], b[NMAX+2], gata[NMAX+2][NMAX+2];
int N;

int main()
{
    in >> N;
    for( int i = 1;  i <= N;  ++i ) in >> a[i] >> b[i];
    out << accumulate(a+1, a+N+1, 0) << '\n';
    for( int i = 1;  i <= N;  ++i ) {
        vector<pair<int,int>> vec;
        int cnt = 0;
        for_each(b+1, b+N+1, [i, &vec, &cnt](int grad){
            if( ++cnt != i && grad )
                vec.push_back({grad, cnt});
        });
        sort(vec.begin(), vec.end());
        reverse(vec.begin(), vec.end());
        for( int j = 0;  a[i];  ++j )
            out << i << ' ' << vec[j].second << '\n',
            --a[i],
            --b[ vec[j].second ];
    }
    return 0;
}