Pagini recente » Cod sursa (job #382058) | Cod sursa (job #1052236) | Cod sursa (job #181752) | Cod sursa (job #292368) | Cod sursa (job #64331)
Cod sursa(job #64331)
#include <cstdio>
#include <algorithm>
#include <bitset>
using namespace std;
#define Nmax 100100
int x[Nmax],y[Nmax];
void solve(int st,int dr)
{
bitset<128> v[128];
int i;
for(i=1;i<=100;++i)
v[i] = 0;
for(i=st;i<=dr;++i)
if(v[x[i]][y[i]] || x[i] == y[i])
{
//bubu
reverse(x+st,x+i+1);
solve(st,i-1);
}
else
v[x[i]][y[i]] = 1;
}
int main()
{
freopen("harta.in","r",stdin);
freopen("harta.out","w",stdout);
int i,n,m,A=0,B=0,a,b;
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%d%d",&a,&b);
while(a--) x[++A] = i;
while(b--) y[++B] = i;
}
solve(1,A);
printf("%d\n",A);
for(i=1;i<=A;++i)
printf("%d %d\n",x[i],y[i]);
return 0;
}