結果

問題 No.2710 How many more?
ユーザー kino0402kino0402
提出日時 2024-03-31 15:07:37
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 469 ms / 2,000 ms
コード長 2,575 bytes
コンパイル時間 5,165 ms
コンパイル使用メモリ 243,988 KB
実行使用メモリ 17,408 KB
最終ジャッジ日時 2024-03-31 15:07:51
合計ジャッジ時間 10,887 ms
ジャッジサーバーID
(参考情報)
judge11 / judge10
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
6,676 KB
testcase_01 AC 1 ms
6,676 KB
testcase_02 AC 336 ms
11,648 KB
testcase_03 AC 221 ms
12,160 KB
testcase_04 AC 194 ms
16,384 KB
testcase_05 AC 125 ms
9,856 KB
testcase_06 AC 165 ms
14,592 KB
testcase_07 AC 118 ms
6,676 KB
testcase_08 AC 102 ms
6,676 KB
testcase_09 AC 307 ms
14,080 KB
testcase_10 AC 161 ms
9,088 KB
testcase_11 AC 247 ms
8,064 KB
testcase_12 AC 399 ms
16,128 KB
testcase_13 AC 443 ms
17,408 KB
testcase_14 AC 459 ms
17,408 KB
testcase_15 AC 469 ms
17,408 KB
testcase_16 AC 447 ms
17,408 KB
testcase_17 AC 441 ms
17,408 KB
testcase_18 AC 2 ms
6,676 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

//関数使用時用入力44行目-
#include<bits/stdc++.h>
#include<atcoder/all> 
using namespace std;
using namespace atcoder;
using ll=long long;
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#define int_max 2147483647
#define int_min -2147483647
#define uint_max 4294967295
#define ll_max 9223372036854775807
#define ll_min -9223372036854775807
#define ull_max 18446744073709551615
#define rep(i,n) for(ll i=0;i<(n);i++)
#define reps(i,n) for(ll i=1;i<=(n);i++)
#define REP(i,j,n) for(ll i=(j);i<(n);i++)
#define all(a) (a).begin(), (a).end()
#define veci vector<int>
#define veci2 vector<vector<int>>
//veci2 A(a,veci(b))
#define vecll vector<ll>
#define vecll2 vector<vector<ll>>
#define vecst vector<string>
#define repc(i,n,A) rep(i,n)cin>>A[i]
#define repc2(i,n,A,B) rep(i,n)cin>>A[i]>>B[i]
#define repc2vec(i,j,a,b,A) rep(i,a)rep(j,b)cin>>A[i][j]
#define pb push_back
#define mp make_pair
#define Endl endl
#define F first
#define S second
#define yes(b) ((b)?"yes":"no")
#define Yes(b) ((b)?"Yes":"No")
#define YES(b) ((b)?"YES":"NO")
template <typename T> inline T gcd(T a,T b) {return (b==0)?a:gcd(b,a%b);}//最大公約数
template <typename T> inline T lcm(T a, T b) {return (a*b)/gcd(a,b);}//最小公倍数
veci dx={-1,0,1,-1,1,-1,0,1};
veci dy={-1,-1,-1,0,0,1,1,1};
veci DX={-1,1,0,0};
veci DY={0,0,-1,1};
int mod = 998244353;
//ここからコード入力(関数使用時用)

//関数
/*ll nibutan(ll K){
  //二分探索 a=要素数 [m]の前配列名
    ll ng=-1;
    ll ok=a;
    while(ok-ng>1){
        ll m=(ng+ok)/2;
        if([m]>K)ok=m;
        else ng=m;
    }
    return ok;
}*/
//ここからコード入力(   ´・ω・`    )
int main(){
  int A,B,tmp1,tmp2;
  cin>>A>>B;
  vector<pair<ll,ll>>C(A);
  rep(i,A){
    cin>>tmp1;
    C[i].F=tmp1;
    C[i].S=i;
  }
  sort(all(C));
  map<ll,ll>D;
  map<ll,ll>E;
  rep(i,A){
    if(i!=0){
      if(tmp1==C[i].F)D[C[i].S]=tmp2;
      else{
        D[C[i].S]=i;
        tmp1=C[i].F;
        tmp2=i;
      }
    }else{
      D[C[i].S]=i;
      tmp1=C[i].F;
      tmp2=i;
    }
  }
  reps(i,A){
    if(i!=1){
      if(tmp1==C[A-i].F)E[C[A-i].S]=tmp2;
      else{
        E[C[A-i].S]=A-i;
        tmp1=C[A-i].F;
        tmp2=A-i;
      }
    }else{
      E[C[A-i].S]=A-i;
      tmp1=C[A-i].F;
      tmp2=A-i;
    }
  }
  rep(i,B){
    cin>>tmp1>>tmp2;
    if(D[tmp1-1]<E[tmp2-1])cout<<0<<endl;
    else cout<<D[tmp1-1]-E[tmp2-1]-1<<endl;
  }
  //5 10 10 15 1 2(3) 2(3) 4 E0223 D0113
  //rep(i,A)cout<<E[i]<<" ";
  //D01114  E02334
}
0