完全按照汝佳神犇写的,为什么会WA
  • 板块题目总版
  • 楼主Zhe8468
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/10/10 08:15
  • 上次更新2023/11/4 04:13:06
查看原帖
完全按照汝佳神犇写的,为什么会WA
185348
Zhe8468楼主2021/10/10 08:15

UVa 512

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
struct Command
{
	char c[5];
	int r1,c1,r2,c2;
	int a,x[20];
}cmd[N];
int r,c,n;
bool simulate(int *r0,int * c0)
{
	for(int i=0;i<n;i++)
	{
		if(cmd[i].c[0]=='E')
		{
			if(cmd[i].r1 == *r0 && cmd[i].c1==*c0)
			{*r0=cmd[i].r2;*c0=cmd[i].c2;}
			else if(cmd[i].r2==*r0 && cmd[i].c2==*c0)
			{*r0=cmd[i].r1;*c0=cmd[i].c1;}
		}else{
			int dr=0,dc=0;
			for(int j=0;j<cmd[i].a;j++)
			{
				int x = cmd[i].x[j];
				if(cmd[i].c[0]=='I')
				{
					if(cmd[i].c[1]=='R' && x<=*r0) dr++;
					if(cmd[i].c[1]=='C' && x<=*c0) dc++;
				}else{
					if(cmd[i].c[1]=='R' && x==*r0) return false;
					if(cmd[i].c[1]=='C' && x==*c0) return false;
					if(cmd[i].c[1]=='R' && x<*r0) dr--;
					if(cmd[i].c[1]=='C' && x<*c0) dc--;
				}
			}
			*r0 += dr;*c0 += dc;
		}
	}
	return true;
}
int main()
{
	#ifdef Zhe
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
	#endif 
	int r0,c0,q,kase=0;
	while(scanf("%d%d%d",&r,&c,&n)==3 && r)
	{
		for(int i=0;i<n;i++)
		{
			cin>>cmd[i].c;
			if(cmd[i].c[0] == 'E'){
				cin>>cmd[i].r1>>cmd[i].c1>>cmd[i].r2>>cmd[i].c2;
			}else{
				cin>>cmd[i].a;
				for(int j=0;j<cmd[i].a;j++) cin>>cmd[i].x[j];
			}
		}
		if(kase>0) cout<<endl;
		cout<<"Spreadsheet #"<<++kase<<endl;
		cin>>q;
		while(q--)
		{
			cin>>r0>>c0;
			cout<<"Cell data in ("<<r0<<","<<c0<<") ";
			if(!simulate(&r0,&c0)) cout<<"GONE"<<endl;
			else cout<<"move to ("<<r0<<","<<c0<<")"<<endl;
		}
	}
	return 0;
}


2021/10/10 08:15
加载中...