为什么这里的报错奇奇怪怪的?
  • 板块学术版
  • 楼主楠枫
  • 当前回复4
  • 已保存回复4
  • 发布时间2020/10/31 17:04
  • 上次更新2023/11/5 09:23:29
查看原帖
为什么这里的报错奇奇怪怪的?
141958
楠枫楼主2020/10/31 17:04

这个程序为什么编译不了呢?

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MOD=1e9+7;
const int N=505000;
int ls(int x) {return (x<<1);}
int rs(int x) {return (x<<1|1);}
struct tree{
	int l,r;
	tree(){}
	tree(int l,int r):l(l),r(r){}
}node[N<<2];
int x[N],r[N],s[N],maxi;
vector<int> seg[N<<2],dag[N<<2];
inline int read() {
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
	return x*f;
}
void build(int l,int r,int id) {
	node[id]=tree(l,r);
	maxi=max(maxi,id);
	if (l==r) {s[l]=id;return;}
	int mid=(l+r)>>1;
	build(l,mid,ls(id));
	build(mid,mid+1,rs(id));
	seg[id].push_back(ls(id));
	seg[id].push_back(rs(id));
}
void con(int u,int l,int r,int sl,int sr,int v) {
	if (l<=sl&&sr<=r) {
		if (u==v) return;
		seg[u].push_back(v);
		return;
	}
	int mid=(sl+sr)>>1;
	if (l<=mid) con(u,l,r,sl,mid,ls(v));
	if (r>mid) con(u,l,r,mid+1,sr,rs(v));
}
signed main() {
	int n=read(),l,r;
	x[1]=1010;
	printf("%lld\n",x[1]);
	for (int i=1;i<=n;i++) {
		x[i]=read();r[i]=read();
		printf("%lld %lld\n",x[i],r[i]);
	}
	/*for (int i=1;i<=n;i++) {
		int mind=x[i]-r[i],maxd=x[i]+r[i];
		l=lower_bound(x+1,x+1+n,mind);
		r=upper_bound(x+1,x+1+n,maxd)-1;
		printf("l=%lld r=%lld\n",l,r);
	}*/
	return 0;
}

总是报这样的错

bomb.cpp:46:18: error: invalid types ‘long long int[long long int]’ for array subscript
   x[i]=read();r[i]=read();
                  ^
bomb.cpp:47:32: error: invalid types ‘long long int[long long int]’ for array subscript
   printf("%lld %lld\n",x[i],r[i]);

在线求教

2020/10/31 17:04
加载中...