Cod sursa(job #2951235)

Utilizator niculaandreiNicula Andrei Bogdan niculaandrei Data 5 decembrie 2022 19:06:23
Problema Taramul Nicaieri Scor 0
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("harta.in");
ofstream fout("harta.out");

const int N_MAX = 105;

int N;
pair<int, int> v[N_MAX], used[N_MAX];

int G[N_MAX][N_MAX];
int Ans, target;

int main()
{
    srand(time(NULL));
    fin >> N;
    for (int i = 1; i <= N; i++) {
        fin >> v[i].first >> v[i].second;
        target += v[i].first + v[i].second;
    }
    target /= 2;
    while (target != Ans) {
        int x, y;
        x = rand() % N + 1;
        do {
            y = rand() % N + 1;
        } while (x == y);
        if (v[x].first > 0 && v[y].second > 0) {
            v[x].first--;
            v[y].second--;
            G[x][y] = 1;
            Ans++;
        }
    }
    fout << Ans << "\n";
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= N; j++) {
            if (G[i][j]) {
                fout << i << " " << j << "\n";
            }
        }
    }
    return 0;
}