求看暴力
查看原帖
求看暴力
567739
Sellaris楼主2022/4/5 17:55

RT,个人打了一个暴力,结果WA#2。

求大佬帮忙看看暴力哪里出问题了。

///*****Sellaris*****///
#pragma once
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>
//#include <bits/extc++.h>
#define int long long
using namespace std;
//using namespace __gnu_pbds;
const int maxn=3e4+1;
inline int read(){
    int ret=0,f=1;char ch=getchar();
    while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
    while(isdigit(ch)){ret=ret*10+ch-'0';ch=getchar();}
    return ret*f; //x=(x<<1)+(x<<3)+(ch^48);
}
int n,m,q;
int a[maxn];
int id[maxn];
int f[maxn];
int reg[maxn];
inline void query(int l,int r){
	register int p=0;
	register int ans=0;
	for(int i=1;i<=n;i++) {
		if(id[i]>=l && id[i]<=r && a[id[i]]!=reg[p]) {
			reg[++p]=a[id[i]];
			reg[p]*=f[p];
			ans+=reg[p]%m;
			ans%=m;
		}
	}
	std::cout<<ans<<"\n";
}
inline bool cmp(int x,int y){
	return a[x]<a[y];
}
signed main(){
    //std::ios::sync_with_stdio(false);std::cin.tie(NULL);std::cout.tie(NULL);
    //freopen("in.txt","r",stdin);
	//freopen("out.txt","w",stdout);
	n=read();m=read();
	for(int i=1;i<=n;i++) a[i]=read(),id[i]=i;
	sort(id+1,id+1+n,cmp);
	f[1]=f[2]=1;reg[0]=-1;
	for(int i=3;i<=maxn;i++) f[i]=(f[i-1]+f[i-2])%m;
	q=read(); 
	while(q--){
		int l=read(),r=read();
		query(l,r);
	}
    return 0;
}

2022/4/5 17:55
加载中...