Pagini recente » Cod sursa (job #2951995) | Cod sursa (job #2581763) | Cod sursa (job #309815) | Cod sursa (job #1110355) | Cod sursa (job #2039567)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
vector <pair<int,int> > plec ;
vector <pair<int,int> > sos ;
int n , m ;
bool mat[101][101] ;
ofstream fout ("harta.out") ;
bool compara ( pair<int,int> a , pair<int,int> b )
{
return a.first < b.first ;
}
void citire ()
{
int i , x , y ;
ifstream fin ("harta.in") ;
fin >> n ;
for ( i = 1 ; i <= n ; i++ )
for ( x = 1 ; x <= n ; x++ )
mat[i][x] = false ;
for ( i = 1 ; i <= n ; i++ )
{
fin >> x >> y ;
plec.push_back(make_pair(x,i)) ;
sos.push_back(make_pair(y,i)) ;
m = m + x ;
}
fout << m << endl ;
}
int main()
{
int i , j ;
citire() ;
sort(sos.begin(),sos.end(),compara) ;
for ( i = sos.size()-1 ; i >= 0 ; i-- )
{
sort(plec.begin(),plec.end(),compara) ;
for ( j = plec.size()-1 ; j >= 0 ; j-- )
{
if ( sos[i].second != plec[j].second )
{
//cout << " pun muchie intre " << plec[i].second << " " << sos[i].second << endl ;
if ( sos[i].first > 0 && plec[j].first > 0 && mat[plec[j].second][sos[i].second] == false)
{
fout << plec[j].second << " " << sos[i].second << endl ;
mat[plec[j].second][sos[i].second] = true ;
sos[i].first-- ;
plec[j].first-- ;
}
}
}
}
}