求助
查看原帖
求助
629192
lisida0820楼主2022/3/18 15:57
#include <bits/stdc++.h>
#define LL long long
#define lowbit(x) (x&-x)
#define ls(x) (x<<1)
#define rs(x) (x<<1|1)
#define INF 2147483647
namespace IO{
	inline LL read(){
	    LL x=0,f=1;char ch=getchar();
	    for (;!isdigit(ch);ch=getchar())if (ch=='-')f=-1;
	    for (;isdigit(ch);ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
	    return x*f;
	}
	inline void write(LL x,char c='\n'){
	    if (x){
	    	if (x<0)x=-x,putchar('-');
	    	char a[30];short l;
	    	for (l=0;x;x/=10)a[l++]=x%10^48;
	    	for (l--;l>=0;l--)putchar(a[l]);
		}
		else putchar('0');putchar(c);
	}
}
using namespace IO;
using namespace std;

const int N = 50;
struct node{
	int x,y;
	string name;
}a[10010];
bool vis[N][N];
int n,m,k,tot;
int main(){
	n=read(),m=read(),k=read();
	for (int i=1;i<=k;i++){
		int opt=read();
		string name;
		if (opt==1){
			int x=read(),y=read();cin>>name;
			if (!vis[x][y]){
				a[++tot].x=x,a[tot].y=y,a[tot].name=name;
				vis[x][y]=1;
			}
			else{
				if (y==m)y=1,x++;
				else y++;
				while (vis[x][y]&&x<=n){
					y++;
					if (y-1==m)y=1,x++;
				}
				if (x<=n){
					a[++tot].x=x,a[tot].y=y,a[tot].name=name;
					vis[x][y]=1;
				}
			}
		}
		else{
			bool flag=1;cin>>name;
			for (int j=1;j<=tot;j++)
				if (a[j].name==name){
					printf("%d %d\n",a[j].x,a[j].y);
					flag=vis[a[j].x][a[j].y]=0;
					a[j].x=-1,a[j].y=-1,a[j].name="";
					break;
				}
			if (flag)puts("-1 -1\n");
		}
	}
    return 0;
}

样例过了,但测试点 11 显示 UKEUKE

2022/3/18 15:57
加载中...