結果
問題 |
No.3298 K-th Slime
|
ユーザー |
|
提出日時 | 2025-10-05 15:04:01 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,614 bytes |
コンパイル時間 | 4,629 ms |
コンパイル使用メモリ | 282,436 KB |
実行使用メモリ | 16,424 KB |
最終ジャッジ日時 | 2025-10-05 15:04:13 |
合計ジャッジ時間 | 9,317 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 10 WA * 5 TLE * 1 -- * 9 |
ソースコード
//#ifndef ONLINE_JUDGE //#define _GLIBCi_DEBUG //#endif // #pragma GCC optimize("Ofast") // #pragma GCC optimize "O3,omit-frame-pointer,inline" #include <iostream> // cout, endl, cin #include <string> // string, to_string, stoi #include <vector> // vector #include <algorithm> // min, mai, swap, sort, reverse, lower_bound, upper_bound #include <utility> // pair, make_pair #include <tuple> // tuple, make_tuple #include <cstdint> // int64_t, int*_t #include <cstdio> // printf #include <map> // map #include <queue> // queue, priority_queue #include <set> // set #include <stack> // stack #include <deque> // deque #include <unordered_map> // unordered_map #include <unordered_set> // unordered_set #include <bitset> // bitset #include <cctype> // isupper, islower, isdigit, toupper, tolower #include <iomanip> // fiied,setprecision #include <limits.h> // INT_MAi #include <math.h> // M_PI #include <random> // random_device, mt19937, uniform_int_distribution #include <regex> // 正規表現 #include <time.h> // time #include <fstream> // ifstream, ofstream #include <array> // array #include <bit> // bit #include <chrono> // chrono #include <span> // span #include <cmath> // sqrt, sin, cos, tan, asin, acos, atan, atan2 #include <complex> // 複素数 // #include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; // using mint = modint1000000007; using mint = modint998244353; using ll = long long; using ull = unsigned long long; using ld = long double; // 80bit 18桁 #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) const int dx[4] = {-1, 0, 1, 0}; const int dy[4] = {0, 1, 0, -1}; const string DIR = "URDL"; const int dx8[8] = {0, 1, 1, 1, 0, -1, -1, -1}; const int dy8[8] = {1, 1, 0, -1, -1, -1, 0, 1}; // INFに3以上を掛ける、またはint(INF)に1以上を足すとオーバーフローする // 4611686016279904255 cf: LLONG_MAi=9223372036854775807 // const ll INF = (1ll << 62) - (1ll << 31) - 1ll; int main(){ ll n,k,q; cin>>n>>k>>q; vector<ll>a(n); rep(i,n)cin>>a[i]; sort(a.begin(),a.end()); int now=k; multiset<ll>st,nokori; rep(i,k)st.insert(a[i]); for(int i=k;i<n;i++)nokori.insert(a[i]); //for(auto x:st){ // cerr<<x<<" "; // //} //cerr<<endl; //for(auto x:nokori){ // cerr<<x<<" "; //} //cerr<<endl; rep(i,q){ int t; cin>>t; if(t==1){ ll x; cin>>x; if(*nokori.begin()>x){ st.insert(x); auto it=st.rbegin(); nokori.insert(*it); st.erase(*it); } else nokori.insert(x); }else if(t==2){ ll y; cin>>y; auto it=st.rbegin(); ll val=*it+y; st.erase(*it); auto it2=nokori.begin(); if(*it2< val){ st.insert(*it2); nokori.erase(it2); nokori.insert(val); }else{ st.insert(val); } }else { auto it=st.rbegin(); //cerr<<"::"; cout<<*it<<endl; } //cerr<<"st: "; //for(auto a:st){ // cerr<<a<<" "; //} //cerr<<endl; //cerr<<"nokori: "; //for(auto b:nokori){ // cerr<<b<<" "; //} //cerr<<endl; } return 0; }