Cod sursa(job #1199206)

Utilizator mikeshadowIon Complot mikeshadow Data 18 iunie 2014 16:13:40
Problema Taramul Nicaieri Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#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];
    }

    for (int i=0; i<n; i++)
    {
        for (int j=i+1; 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]--;}
        }
        for (int j=0; j<i && 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]--;}
        }
    }

    fout<<rez.size();
    fout<<'\n';
    for(int i=0; i<rez.size(); i++)
        fout<<rez[i].x<<' '<<rez[i].y<<'\n';

    return 0;
}