提出 #50820283


ソースコード 拡げる

#include"bits/stdc++.h"
#include <atcoder/segtree>
using namespace std;using ll=long long;using vi=vector<int>;using vvi=vector<vi>;using vl=vector<ll>;using vvl=vector<vl>;using P=pair<int,int>;using PL=pair<ll,ll>;using vp=vector<P>;using vpl=vector<PL>;
#define pqueue priority_queue
template<typename T>constexpr auto inf=numeric_limits<T>::max()/2;constexpr int INF=inf<int>,MOD=1000000007;constexpr ll LINF=inf<ll>;
#define _ol3(_1,_2,_3,name,...)name
#define _rep(i,n)_repi(i,0,n)
#define _repi(i,a,b)for(int i=a,i##_l=(b);i<i##_l;++i)
#define REP(...)_ol3(__VA_ARGS__,_repi,_rep,)(__VA_ARGS__)
#define REPR(i,n)for(int i=n-1;i>=0;--i)
#define REPA(i,v)REP(i,(v).size())
#define all(v)(v).begin(),(v).end()
#define rall(v)(v).rbegin(),(v).rend()
#define bit(n)(1ll<<(n))
#define F first
#define S second
#define endl '\n'
template<class T, class U>bool chmax(T&a,const U&b){bool x=a<b;x?a=b:b;return x;}template<class T, class U>bool chmin(T&a,const U&b){bool x=a>b;x?a=b:b;return x;}
template<class T, class U>auto max(const T&a,const U&b){return a<b?b:a;}template<class T, class U>auto min(const T&a,const U&b){return a<b?a:b;}
template<class T,class U>ostream&operator<<(ostream&o,const pair<T,U>&p){return o<<p.F<<' '<<p.S;}template<class T,class U>istream&operator>>(istream&i,pair<T,U>&p){return i>>p.F>>p.S;}
template<class T>class iterable{static false_type c(string v);template<class U>static auto c(U v)->decltype(all(v),true_type());static false_type c(...);public:const static bool value=decltype(c(declval<T>()))::value;};
template<class T,enable_if_t<iterable<T>::value,int> =0>ostream&operator<<(ostream&o,const T&v){for(auto&&i:v)o<<i<<' ';return o;}
template<class T>istream&operator>>(istream&i,vector<T>&v){for(T&j:v)i>>j;return i;}template<class T>vector<T>&operator<<(vector<T>&v,const T&t){v.push_back(t);return v;}
template<class T,class U>queue<T,U>&operator<<(queue<T,U>&v, const T&t){v.push(t);return v;}template<class T,class U>queue<T,U>&operator>>(queue<T,U>&v, T&t){t=v.front();v.pop();return v;}
template<class T,class U,class V>pqueue<T,U,V>&operator<<(pqueue<T,U,V>&v, const T&t){v.push(t);return v;}template<class T,class U,class V>pqueue<T,U,V>&operator>>(pqueue<T,U,V>&v, T&t){t=v.front();v.pop();return v;}
template<class T,class U>stack<T,U>&operator<<(stack<T,U>&v, const T&t){v.push(t);return v;}template<class T,class U>stack<T,U>&operator>>(stack<T,U>&v, T&t){t=v.front();v.pop();return v;}
template<class T,class U,class V>set<T,U,V>&operator<<(set<T,U,V>&v,const T&t){v.insert(t);return v;}template<class T,class U,class V>multiset<T,U,V>&operator<<(multiset<T,U,V>&v,const T&t){v.insert(t);return v;}
template<class T,enable_if_t<is_integral<T>::value,int> =0>T mod(T a, T b){if(a>0)return a%b;return b-(-a%b);}template<class T,enable_if_t<is_floating_point<T>::value,int> =0>T mod(T a, T b){if(a>0)return fmod(a,b);return b-fmod(-a,b);}
template<class T,class U>pair<T,U>&operator+=(pair<T,U>&a, const pair<T,U>&b){a.F+=b.F;a.S+=b.S;return a;}template<class T,class U>pair<T,U> operator+(const pair<T,U>&a, const pair<T,U>&b){auto r=a;return r+=b;}
template<class T,class U>pair<T,U>&operator-=(pair<T,U>&a, const pair<T,U>&b){a.F-=b.F;a.S-=b.S;return a;}template<class T,class U>pair<T,U> operator-(const pair<T,U>&a, const pair<T,U>&b){auto r=a;return r-=b;}
template<class T,class U>pair<T,U> operator-(const pair<T,U>&a){return {-a.F, -a.S};}
template<class T,class U>double norm(const pair<T,U>&p){return norm(p.F)+norm(p.S);}template<class T,class U>double abs(const pair<T,U>&p){return sqrt(norm(p));}
void _print(ostream&){}template<class T,class...U>void _print(ostream&s,const T&t,const U&...u){s<<t<<(sizeof...(u)?' ':'\n');_print(s,u...);}
template<class...T>void print(const T&...t){_print(cout,t...);}template<class...T>void dprint(const T&...t){_print(cerr,t...);}
#ifndef LOCAL
struct osd{template<class T>osd&operator<<(const T&t){return*this;}};osd cer_;
#define dprint(...)
#define cerr cer_
#endif
#define dbg(...) dprint("@l",__LINE__,':',#__VA_ARGS__,'=',__VA_ARGS__)
#define cho(n,a,b)print((n)?a:b)
void YES(int n){cho(n,"YES","NO");}void Yes(int n){cho(n,"Yes","No");}void Poss(int n){cho(n,"Possible","Impossible");}

struct A {
  int a, ac;
  int b, bc;

  friend ostream& operator<<(ostream& o, const A& a) {
    return o << "(" << a.a << " " << a.ac << " " << a.b << " " << a.bc << ")";
  }

};

A op(A a, A b) {
  map<int, int> m;
  m[a.a] += a.ac;
  m[b.a] += b.ac;
  m[a.b] += a.bc;
  m[b.b] += b.bc;
  A r;
  auto iter = m.rbegin();

  r.a = iter->first;
  r.ac = iter->second;

  ++iter;
  if (iter == m.rend()) {
    r.b = 0;
    r.bc = 0;
    return r;
  }


  r.b = iter->first;
  r.bc = iter->second;

  return r;
}

A e() { return {0, 0, 0, 0}; }

int main(){
  cin.tie(0);ios::sync_with_stdio(0);
  cout<<fixed<<setprecision(10);
  int n, q;
  cin >> n >> q;
  vi a(n);
  cin >> a;
  vector<A> aa(n);
  REP(i, n) aa[i] = {a[i], 1, 0, 0};
  atcoder::segtree<A, op, e> seg(aa);

  REP(_, q) {
    int t, a, b;
    cin >> t >> a >> b;
    if (t == 1) {
      --a;
      seg.set(a, {b, 1, 0, 0});
    } else {
      --a;
      /* --b; */
      auto r = seg.prod(a, b);
      dbg(r);
      print(r.bc);
    }
  }
}

提出情報

提出日時
問題 F - Second Largest Query
ユーザ ibuki2003
言語 C++ 20 (gcc 12.2)
得点 525
コード長 5310 Byte
結果 AC
実行時間 482 ms
メモリ 15356 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 525 / 525
結果
AC × 3
AC × 47
セット名 テストケース
Sample sample00.txt, sample01.txt, sample02.txt
All sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt, testcase42.txt, testcase43.txt
ケース名 結果 実行時間 メモリ
sample00.txt AC 1 ms 3584 KiB
sample01.txt AC 1 ms 3432 KiB
sample02.txt AC 1 ms 3436 KiB
testcase00.txt AC 463 ms 15224 KiB
testcase01.txt AC 479 ms 15352 KiB
testcase02.txt AC 438 ms 14672 KiB
testcase03.txt AC 470 ms 15220 KiB
testcase04.txt AC 301 ms 14956 KiB
testcase05.txt AC 301 ms 15248 KiB
testcase06.txt AC 435 ms 14924 KiB
testcase07.txt AC 466 ms 15200 KiB
testcase08.txt AC 482 ms 14916 KiB
testcase09.txt AC 466 ms 15228 KiB
testcase10.txt AC 336 ms 14996 KiB
testcase11.txt AC 294 ms 15188 KiB
testcase12.txt AC 440 ms 14844 KiB
testcase13.txt AC 460 ms 15256 KiB
testcase14.txt AC 435 ms 14892 KiB
testcase15.txt AC 474 ms 15184 KiB
testcase16.txt AC 343 ms 14884 KiB
testcase17.txt AC 296 ms 15180 KiB
testcase18.txt AC 265 ms 14884 KiB
testcase19.txt AC 271 ms 15204 KiB
testcase20.txt AC 273 ms 14992 KiB
testcase21.txt AC 289 ms 15228 KiB
testcase22.txt AC 290 ms 14924 KiB
testcase23.txt AC 302 ms 15180 KiB
testcase24.txt AC 295 ms 14920 KiB
testcase25.txt AC 304 ms 15244 KiB
testcase26.txt AC 285 ms 14956 KiB
testcase27.txt AC 311 ms 15356 KiB
testcase28.txt AC 307 ms 14920 KiB
testcase29.txt AC 326 ms 15168 KiB
testcase30.txt AC 350 ms 15012 KiB
testcase31.txt AC 367 ms 15348 KiB
testcase32.txt AC 381 ms 15112 KiB
testcase33.txt AC 386 ms 15352 KiB
testcase34.txt AC 396 ms 15168 KiB
testcase35.txt AC 403 ms 15144 KiB
testcase36.txt AC 401 ms 15008 KiB
testcase37.txt AC 418 ms 15256 KiB
testcase38.txt AC 419 ms 15168 KiB
testcase39.txt AC 435 ms 15208 KiB
testcase40.txt AC 447 ms 14920 KiB
testcase41.txt AC 450 ms 15184 KiB
testcase42.txt AC 433 ms 15172 KiB
testcase43.txt AC 462 ms 15276 KiB