ants.c
#include <stdio.h>
typedef struct ant {
char a;
int dp, dp2;
} ANT;
int b,i,l,a,p,x,t,a1,a2,et;
char lr;
ANT w[100000];
int main() {
while (scanf("%d %d", &l
, &a
) == 2) { for (i=0;i<a;i++) {
w[p].a=lr;
w[p].dp=p;
//printf("%c\n",w[i].a);
}
for (i=0;i<a;i++) {
w[i].dp2=-1;
}
t=0;
while (a>0) {
t++;
i=0;
while (i<l) {
if (w[i].a=='R') {
//printf("%d\n",i);
if (i+1>=l) {
a--;
if (a==1) {
b=1;
a1=w[i].dp;
et=t;
}
if (a==0) {
//printf("Itt %d\n",i);
if (b==1) a2=w[i].dp;
else a1=w[i].dp;
et=t;
}
//printf("Vege %d\n",t);
w[i].a='0';
w[i].dp=-1;
i+=2;
}
else if (w[i+1].a=='R') {
x=w[i+1].dp;
w[i+1].dp=w[i].dp;
if(w[i+2].a=='R') w[i+2].dp2=x;
w[i].dp=-1;
w[i].a='0';
i+=2;
}
else if (w[i+1].a=='L') {
w[i+1].a='R';
w[i].a='L';
i+=2;
}
else if (w[i+2].a=='L') {
w[i+1].dp=w[i].dp;
w[i+1].dp2=w[i+2].dp;
w[i+1].a='Z';
w[i].dp=-1;
w[i+2].dp=-1;
w[i].a='0';
w[i+2].a='0';
i+=3;
}
else {
w[i+1].a='R';
w[i+1].dp=w[i].dp;
w[i].a='0';
w[i].dp=-1;
i+=2;
}
}
else if (w[i].a=='L') {
if (i-1<0) {
a--;
if (a==1) {
b=1;
a1=w[i].dp;
et=t;
}
if (a==0) {
//printf("Itt %d\n",i);
if (b==1) a2=w[i].dp;
else a1=w[i].dp;
et=t;
}
w[i].a='0';
w[i].dp=-1;
i+=1;
}
else if (w[i-1].a=='R') {
w[i-1].dp2=w[i].dp;
w[i-1].a='Z';
w[i].dp=-1;
w[i].a='0';
i+=1;
}
else if (w[i-1].a=='L') {
x=w[i-1].dp;
w[i-1].dp=w[i].dp;
if(w[i-2].a=='L') w[i-2].dp2=x;
w[i].dp=-1;
w[i].a='0';
i+=1;
}
else {
w[i-1].a='L';
w[i-1].dp=w[i].dp;
w[i].a='0';
w[i].dp=-1;
i+=1;
}
}
else if (w[i].a=='Z') {
if (i-1<0) {
a--;
if (a==0) {
a1=w[i].dp;
et=t-1;
}
}
if (i+1>=l) {
a--;
if (a==0) {
a1=w[i].dp;
et=t-1;
}
}
if (w[i-1].a=='R') {
w[i-1].dp2=w[i].dp;
w[i-1].a='Z';
}
else if (w[i-1].a!='R'){
w[i-1].dp=w[i].dp;
w[i-1].a='L';
}
if (w[i+1].a=='L') {
w[i+1].dp2=w[i].dp2;
w[i+1].a='Z';
}
else if (w[i+1].a!='L'){
w[i+1].dp=w[i].dp2;
w[i+1].a='R';
}
w[i].dp=-1;
w[i].dp2=-1;
w[i].a='0';
i+=2;
}
else i++;
}
}
if (b==1) {
if (a1
<a2
) printf("The last ant will fall down in %d seconds - started at %d and %d\n",et
,a1
,a2
); else printf("The last ant will fall down in %d seconds - started at %d and %d\n",et
,a2
,a1
); }
else printf("The last ant will fall down in %d seconds - started at %d\n",et
,a2
); b=0;
}
return 0;
}