Pagini recente » Cod sursa (job #2154280) | Cod sursa (job #3172559) | Cod sursa (job #1806094) | Cod sursa (job #2769388) | Cod sursa (job #830597)
Cod sursa(job #830597)
#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>b[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;
//a[i].poz=i;
//b[i]=a[i];
}
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[io[i]].out;
--a[it[j]].in;
}
++j;
}
}
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
if(v[i][j])
g<<i<<" "<<j<<"\n";
return 0;
}