Cod sursa(job #830602)

Utilizator lily3Moldovan Liliana lily3 Data 7 decembrie 2012 10:03:27
Problema Taramul Nicaieri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;

int i,j,n,m,k,aux,nr=0;
int ok,x,y,it[101],io[101];
bool v[101][101];
struct harta
{
    int out,in,poz;
};
harta a[101],b[101];
bool cmp(int x,int y)
{
    if(a[x].out==a[y].out)
    return x<y;
    return a[x].out>a[y].out;
}
bool cmp1(int x,int y)
{
    if(a[x].in==a[y].in)
    return a[x].out>a[y].out;
    return a[x].in>a[y].in;
}
int main()
{
    ifstream f("harta.in");
    ofstream g("harta.out");
    f>>n;
    for(i=1;i<=n;++i)
    {
    f>>a[i].out>>a[i].in;
    it[i]=io[i]=i;
    nr+=a[i].out;
    }
    g<<nr<<"\n";
    sort(io+1,io+n+1,cmp);
    for(i=1;i<=n;++i)
    {
        sort(it+1,it+n+1,cmp1);
        j=1;
        while(a[io[i]].out)
        {
            x=io[i],y=it[j];
            if(x!=y)
            {
            v[x][y]=1;
        --a[x].out;
        --a[y].in;
            }
            ++j;
        }
    }
    for(i=1;i<=n;++i)
        for(j=1;j<=n;++j)
            if(v[i][j])
                g<<i<<" "<<j<<"\n";
    return 0;
}