Pagini recente » Cod sursa (job #1281360) | Cod sursa (job #1209345) | Cod sursa (job #3198095) | Cod sursa (job #1100779) | Cod sursa (job #1199212)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <string>
#include <vector>
#include <map>
using namespace std;
#define max(a,b) ((a>b)?a:b)
#define TEST
#ifdef TEST
ifstream fin("harta.in");
ofstream fout("harta.out");
#else
#define fin cin
#define fout cout
#endif
int n;
int a[100];
int b[100];
struct ed
{
int x, y;
};
vector<ed> rez;
int main()
{
fin>>n;
for(int i=0; i<n; i++)
{
fin>>a[i]>>b[i];
}
int c=-1;
for (int i=0; i<n; i++)
{
for (int j=0; j<n && a[i]; j++)
{
if ((j!=i)&&b[j]) {ed t; t.x=i+1; t.y = j+1; rez.push_back(t); b[j]--; a[i]--;}
}
if (a[i]) c=i;
}
if (rez.size()&& c==-1)
{
int t = rez[0].y;
rez[0].y = c;
ed tmp;
tmp .x = c;
tmp.y = t;
}
fout<<rez.size();
fout<<'\n';
for(int i=0; i<rez.size(); i++)
fout<<rez[i].x+1<<' '<<rez[i].y+1<<'\n';
return 0;
}