Pagini recente » Cod sursa (job #1623162) | Cod sursa (job #1925120) | Cod sursa (job #591731) | Cod sursa (job #603349) | Cod sursa (job #488727)
Cod sursa(job #488727)
#include<fstream.h>
ifstream f("harta.in");
ofstream g("harta.out");
int n, i, j, p, iese[101], intra[101], dim;
typedef struct
{
int st, dr;
}Muchie;
Muchie ST[1000];
int valid()
{
int nr = 0;
if(intra[ST[p].dr == 0])
return 0;
if(ST[p].st == ST[p].dr)
return 0;
if(ST[p].st == ST[p-1].st && ST[p].dr < ST[p-1].dr)
return 0;
for(i = 1; i < p; i++)
{
if(ST[i].st == ST[p].st && ST[i].dr == ST[p].dr)
return 0;
if(ST[i].dr == ST[p].dr)
{
nr++;
if(nr > intra[p])
return 0;
}
}
return 1;
}
void tipareste()
{
for(i = 1; i <= dim; i++)
g << ST[i].st << ' ' << ST[i].dr << '\n';
}
void back()
{
p = 1;
while(p)
if(ST[p].dr < n)
{
ST[p].dr++;
if(valid())
if(p == dim)
{
tipareste();
p = 0;
}
else
p++;
}
else
{
ST[p].dr = 0;
p--;
}
}
int main()
{
f >> n;
for(i = 1; i <= n; i++)
f >> iese[i] >> intra[i];
for(i = 1; i <= n; i++)
{
for(j = 1; j <= iese[i]; j++)
{
dim++;
ST[dim].st = i;
}
}
g << dim << '\n';
back();
f.close();
g.close();
return 0;
}