Pagini recente »
Istoria paginii utilizator/racostin
|
Cod sursă (job #431637)
|
Istoria paginii utilizator/ana_maria12
|
Atașamentele paginii Clasament goodluck
|
Cod sursă (job #317616)
Cod sursă (job
#317616)
#include <fstream>
using namespace std;
ifstream in ("domino.in");
ofstream out ("domino.out");
const int N=10002;
struct DOMINO
{
int a,rot,ap;
};
DOMINO v[N];
int main()
{
int n,k1,k2,i,x,y,cntr,cnte,nr=0,multi,multit,j;
DOMINO temp;
in>>n>>k1>>k2;
for (i=1;i<=n;i++)
{
in>>x>>y;
temp.ap=cntr=cnte=multit=multi=0;
if(x<y)
swap(x,y), temp.rot=1;
else
temp.rot=0;
temp.a=x*10+y;
while (nr>cnte && v[nr-cnte].a<temp.a && k2>cnte+multit+multi)
{
if (v[nr-cnte].rot>multi)
cntr++;
if (multi<v[nr-cnte].ap)
multi++;
else
multit+=multi, multi=0, cnte++;
}
if(k1+cntr-temp.rot<0)
{
swap(x,y);
temp.rot=cntr=cnte=multit=multi=0;
temp.a=x*10+y;
while (nr>cnte && v[nr-cnte].a<temp.a && k2>cnte+multit+multi)
{
if (v[nr-cnte].rot>multi)
cntr++;
if (multi<v[nr-cnte].ap)
multi++;
else
multit+=multi, multi=0, cnte++;
}
}
k1+=cntr-temp.rot;
k2-=cnte+multit+multi;
nr-=cnte;
v[nr].ap-=multi;
if (temp.a==v[nr].a)
v[nr].ap++, v[nr].rot+=temp.rot;
else
nr++, v[nr]=temp;
}
while (k2)
{
if (v[nr].ap==0)
nr--, k2--;
else
if (k2>=v[nr].ap)
k2-=v[nr].ap, v[nr].ap=0;
else
v[nr].ap-=k2, k2=0;
}
for(i=1;i<=nr;i++)
{
for (j=1;j<=v[i].ap+1;j++)
out<<v[i].a;
}
return 0;
}