Cod sursa(job #829992)

Utilizator lily3Moldovan Liliana lily3 Data 6 decembrie 2012 09:49:21
Problema Taramul Nicaieri Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.9 kb
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;

int i,j,n,m,v[101][101],k,aux,nr=0;
int ok,x,y;
int t[102][102];
struct harta
{
    int out,in,poz;
};
harta a[101],b[101];
bool cmp(harta a,harta b)
{
    if(a.out==b.out)
    return a.in>b.in;
    return a.out>b.out;
}
bool cmp1(harta a,harta b)
{
    if(a.in==b.in)
    return a.out>b.out;
    return a.in>b.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;
    nr+=a[i].out;
    a[i].poz=i;
    b[i]=a[i];
    }
    //sort(a+1,a+n+1,cmp);
    for(i=1;i<=n;++i)
    {
        //aux=b[i].in;
        //b[i].in=0;
        for(j=1;j<=n&&a[i].out;++j)
        if(a[j].in&&j!=i)
        {
            v[i][j]=1;
            t[j][++t[j][0]]=i;
            --a[j].in;
            --a[i].out;
        }
        else
        if(a[j].in==0)
        {
            --a[i].out;
            v[t[j][t[j][0]]][j]=0;
            ok=0;
            for(k=1;k<=n&&!ok;++k)
            if(a[k].in)
            v[t[j][t[j][0]]][k]=1,ok=1;
            v[i][j]=1;
            t[j][t[j][0]]=i;
        }
        //sort(b+1,b+n+1,cmp1);
        /*g<<a[i].poz<<" "<<a[i].out<<"\n";
        for(j=1;j<=n;++j)
        g<<b[j].poz<<" "<<b[j].out<<" "<<b[j].in<<"\n";
        g<<"\n";
        m=a[i].out;
        j=1;
        while(j<=m&&m)
        {
            x=a[i].poz,y=b[j].poz;
        --a[i].out;
        if(b[j].in)
        {
        --b[j].in;
        v[x][y]=1;
        t[y][++t[y][0]]=x;
        }
       else
        {
        v[t[y][t[y][0]]][y]=0;
        v[x][y]=1;
        t[y][t[y][0]]=x;
        }
        ++j;
        }
        b[i].in=aux;*/

    }
    g<<nr<<"\n";
    for(i=1;i<=n;++i)
    {
        for(j=1;j<=n;++j)
        if(v[i][j])
        g<<i<<" "<<j<<"\n";
    }
    return 0;
}