思路:这题看起来是个很简单的数组查询题,但是他的空间复杂度很大,我们用二维数组是存不下的,我们就可以考虑用map容器来存储,定义map的前一个变量为数组下标的数据类型,后面为存储的数据类型,后面如果嵌套一个map的话就相当于一个二维数组(纯属个人理解),map<int,map<int,int > > q;这就是二维数组的map容器了,最后加个快读优化一下时间就好了。
上代码:
#include<bits/stdc++.h>
using namespace std;
int n,q,x,k,l,s;
map<int,map<int,int> > a; //二维数组map容器
inline int read(){ //快读模板
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
return s*w;
}
int main(){
n=read(),q=read();
for(int i=1;i<=q;i++){
s=read();
if(s==1){ //如果s为1则是存东西的命令
x=read(),k=read(),l=read();
a[x][k]=l; //将东西存到对应位置
}else{
x=read(),k=read(),
cout<<a[x][k]<<endl; //输出对应位置的东西
}
}
return 0;
}