Pagini recente » Cod sursa (job #2262049) | Cod sursa (job #1204180) | Cod sursa (job #198565) | Cod sursa (job #219827) | Cod sursa (job #949402)
Cod sursa(job #949402)
#include<fstream>
using namespace std;
ifstream f("origami.in");
ofstream g("origami.out");
int n,m,ma,i,j,h,k,u,a,b,v[400][400],t;
void flip1(),flip2(),add1(),add2();
int main ()
{
f>>n>>u;
m=n;
h=1;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
v[i][j]=1;
while(u--)
{
f>>a>>b;
if(a==1)
{
flip1();
add1();
if(b<=m/2)
m-=b;
else
m=b;
}
else
{
flip2();
add2();
if(b<=n/2)
n-=b;
else
n=b;
}
}
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(v[i][j]>ma)
ma=v[i][j];
g<<n<<" "<<m<<" "<<ma;
return 0;
}
void flip1()
{
for(i=1;i<=n;++i)
for(j=1;j<=b/2;++j)
swap(v[i][j],v[i][b-j+1]);
}
void add1()
{
for(i=1;i<=n;++i)
for(j=1;j<=b;++j)
v[i][j]+=v[i][b+j];
for(i=1;i<=n;++i)
for(j=b+1;j<=b;++j)
v[i][j]=v[i][b+j];
}
void flip2()
{
for(i=1;i<=b/2;++i)
for(j=1;j<=m;++j)
swap(v[i][j],v[b-i+1][j]);
}
void add2()
{
for(i=1;i<=b;++i)
for(j=1;j<=m;++j)
v[i][j]+=v[i+b][j];
for(i=b+1;i<=n;++i)
for(j=1;j<=m;++j)
v[i][j]=v[i+b][j];
}