提出 #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);
}
}
}
提出情報
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
525 / 525 |
| 結果 |
|
|
| セット名 |
テストケース |
| 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 |