Pagini recente » Cod sursa (job #2961899) | Cod sursa (job #579448) | Cod sursa (job #767953) | Cod sursa (job #360126) | Cod sursa (job #2960613)
#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 i = 1; i <= n; ++i )
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;
}