Pagini recente » Cod sursa (job #580504) | Cod sursa (job #2576009) | Cod sursa (job #2806604) | Cod sursa (job #119052) | Cod sursa (job #3179652)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
const int NMAX = 100;
pair<int, int> intrare[1 + NMAX];
pair<int, int> iesire[1 + NMAX];
vector<pair<int, int>> sol;
int main()
{
ifstream in("harta.in");
ofstream out("harta.out");
ios_base::sync_with_stdio(false);
in.tie(nullptr);
out.tie(nullptr);
int n;
in >> n;
for (int i = 1; i <= n; ++i)
{
in >> intrare[i].first >> iesire[i].second;
intrare[i].second = i;
iesire[i].second = i;
}
sort(intrare + 1, intrare + 1 + n);
sort(iesire + 1, iesire + 1 + n);
while (intrare[n].first > 0)
{
for (int i = n; i >= 1 && intrare[n].first > 0; --i)
{
if (iesire[i].second != intrare[n].second)
{
sol.emplace_back(make_pair(iesire[i].second, intrare[n].second));
--intrare[n].first;
--iesire[i].first;
}
}
sort(intrare + 1, intrare + 1 + n);
sort(iesire + 1, iesire + 1 + n);
}
out << sol.size() << '\n';
for (int i = 0; i < sol.size(); ++i)
out << sol[i].first << ' ' << sol[i].second << '\n';
in.close();
out.close();
return 0;
}