Cod sursa(job #1443983)
Utilizator | Data | 29 mai 2015 02:36:04 | |
---|---|---|---|
Problema | Taramul Nicaieri | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 | Marime | 1.03 kb |
#include <fstream>
#define maxn 105
using namespace std;
ifstream fin("harta.in");
ofstream fout("harta.out");
int n, x, y, sum;
int in[maxn], out[maxn], v[maxn];
int a[maxn][maxn];
int main()
{
int l=1;
fin >> n;
for(int i=1; i<=n; i++)
{
fin >> x >> y;
out[l]=x;
in[l++]=y;
sum+=y;
}
fout << sum << '\n';
for(int i=1; i<=n; i++)
{
for(int t=1; t<=n; t++)
{
v[t]=0;
}
for(int j=1; j<=n; j++)
{
if(i!=j && in[j])
{
a[in[j]][++v[in[j]]]=j;
}
}
for(int j=n; j>0; j--)
{
if(!out[i])
break;
for(int k=v[j]; k>0; k--)
{
if(!out[i])
break;
int aux=a[j][k];
out[i]--;
in[aux]--;
fout << i << ' ' << aux << '\n';
}
}
}
return 0;
}