偶遇此题,兴致又起。踌躇满志,手飞盘上。鲜红之十,刺人割心。
查看原帖
偶遇此题,兴致又起。踌躇满志,手飞盘上。鲜红之十,刺人割心。
658786
STUDENT00楼主2023/1/7 20:40

10分求大佬,代码如下:

#include<bits/stdc++.h>
#define N 1000005
using namespace std;
int n,x[N],y[N],a[N],b[N],mina1[N],mina2[N],minb1[N],minb2[N];
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]);
	for(int i=1;i<=n;i++) a[i]=x[i]-y[i],b[i]=x[i]-(i==1?y[n]:y[i-1]);
	for(int i=1;i<=n;i++) a[i]+=a[i-1];for(int i=n;i>=1;i--) b[i]+=b[i+1];
	mina1[0]=mina2[n+1]=minb1[0]=minb2[n+1]=2e9;
	for(int i=1;i<=n;i++) mina1[i]=min(mina1[i-1],a[i]),mina2[i]=min(mina2[i+1],a[i]),minb1[i]=min(minb1[i-1],b[i]),minb2[i]=min(minb2[i+1],b[i]);
	for(int i=1;i<=n;i++){
		if(mina2[i]-a[i-1]>=0&&a[n]-a[i-1]+mina1[i-1]>=0||minb1[i]-b[i+1]>=0&&b[1]-b[i+1]+minb2[i+1]>=0) printf("TAX\n");
		else printf("NIE\n");
	}
	return 0;
}
2023/1/7 20:40
加载中...