#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
struct ins{
string s;
int k=0,a[20]={0},r1=0,c1=0,r2=0,c2=0;
};
void fun(int &x,int &y,ins T)
{
int i,count;
if(T.s=="DR"){
count=0;
for(i=0;i<T.k;i++){
if(T.a[i]<x)
count++;
else if(T.a[i]==x)
x=0,y=0;
}
if(x)
x-=count;
}
else if(T.s=="DC"){
count=0;
for(i=0;i<T.k;i++){
if(T.a[i]<y)
count++;
else if(T.a[i]==y)
x=0,y=0;
}
if(y)
y-=count;
}
else if(T.s=="IC"){
count=0;
for(i=0;i<T.k;i++)
if(T.a[i]<=y)
count++;
y+=count;
}
else if(T.s=="IR"){
count=0;
for(i=0;i<T.k;i++)
if(T.a[i]<=x)
count++;
x+=count;
}
else{
if(x==T.r1&&y==T.c1)
x=T.r2,y=T.c2;
else if(x==T.r2&&y==T.c2)
x=T.r1,y=T.c1;
}
}
int main()
{
//freopen("input.txt","r",stdin);
int m,n,p,q,T=0,i,j,x,y;
while(cin>>m>>n){
if(!m)
break;
if(T)
cout<<endl;
cout<<"Spreadsheet #"<<++T<<endl;
cin>>p;
ins *L=new ins[p];
for(i=0;i<p;i++){
cin>>L[i].s;
if(L[i].s=="EX")
cin>>L[i].r1>>L[i].c1>>L[i].r2>>L[i].c2;
else{
cin>>L[i].k;
for(j=0;j<L[i].k;j++)
cin>>L[i].a[j];
}
}
cin>>q;
for(i=0;i<q;i++){
cin>>x>>y;
cout<<"Cell data in ("<<x<<','<<y<<") ";
for(j=0;j<p;j++)
fun(x,y,L[j]);
if(x)
cout<<"moved to ("<<x<<','<<y<<')'<<endl;
else
cout<<"GONE"<<endl;
}
}
return 0;
}
UVA - 512 Spreadsheet Tracking
最新推荐文章于 2024-05-10 22:31:28 发布