Cod sursa(job #2960608)

Utilizator BVLUBogdan Ivan BVLU Data 4 ianuarie 2023 19:04:42
Problema Taramul Nicaieri Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

vector < pair < int, int > > grade, muchii;
int n;

void citire()
{
    ifstream f("harta.in");
    f >> n;
    grade.resize( n + 1 );
    for( int i = 1; i <= n; ++i )
    {
        int x, y;
        f >> x >> y;
        grade[i] = make_pair( x, y );
    }
    f.close();
}

void rezolvare()
{
    for( int i = 1; i <= n; ++i )
    {
        for( int j = i + 1; j <= n && grade[i].first; ++j )
            if( grade[j].second )
            {
                muchii.push_back( make_pair( i, j ) );
                --grade[i].first;
                --grade[j].second;
            }
        for( int j = 1; j < i && grade[i].first; ++j )
            if( grade[j].second )
            {
                muchii.push_back( make_pair( i, j ) );
                --grade[i].first;
                --grade[j].second;
            }
    }
}

void afisare()
{
    ofstream g("harta.out");
    g << muchii.size() << "\n";
    for( int i = 0; i < muchii.size(); ++i )
        g << muchii[i].first << " " << muchii[i].second << "\n";
    g.close();
}

int main()
{
    citire();
    rezolvare();
    afisare();
    return 0;
}