Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstdio>
- using namespace std;
- int a[100001][101];
- int main()
- {
- int n;
- scanf("%d",&n);
- int temp;
- for(int i=0;i<=100000;i++)
- {
- for(int j=0;j<=100;j++)
- {
- a[i][j]=0;
- }
- }
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=100;j++)
- a[i][j]=a[i][j]+a[i-1][j];
- scanf("%d",&temp);
- a[i][temp]++;
- }
- /* for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=5;j++)
- printf("%d",a[i][j]);
- cout<<"\n";
- }*/
- int left,right;
- int mod;
- int t;
- scanf("%d",&t);
- long long int ans;
- long long int x;
- while(t--)
- {
- ans=1;
- scanf("%d",&left);
- scanf("%d",&right);
- scanf("%d",&mod);
- if(left==right)
- {
- for(int i=1;i<=100;i++)
- {
- ans=(ans*i)%mod;
- if(ans>mod) ans=ans%mod;
- ans=(ans*a[left][i])%mod;
- if(ans>mod) ans=ans%mod;
- }
- }
- else{
- for(int i=1;i<=100;i++)
- {
- if(left>1)
- {
- x=a[right][i]-a[left-1][i];
- //cout<<"hiiii"<<x<<"\n";
- }
- else if (left==1)
- {
- x=a[right][i];
- //cout<<"hiiii"<<x<<"\n";
- }
- if(x>0)
- {/*ans=((ans%mod)*(i%mod)*(a[left][i]%mod))%mod;
- if(ans>mod)
- ans=ans%mod;*/
- ans=(ans*i)%mod;
- if(ans>mod) ans=ans%mod;
- ans=(ans*x)%mod;
- if(ans>mod) ans=ans%mod;
- }
- //if(ans==0)
- //break;
- }
- }
- printf("%lld\n",ans);
- }
- return 0;
- }
- /*
- 5
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
- 4
- 1 2 3
- 2 3 4
- 1 1 1
- 1 5 1000000000
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement