Submission #00186
ソースコード
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <iostream> #include <string> #include <algorithm> #include <vector> #include <map> #include <queue> #include <functional> using namespace std; #define pb emplace_back #define fi first #define se second #define rep(i,n) for(int i=0; i<(n); ++i) #define ALL(x) (x).begin(), (x).end() #define show(...) fprintf(stderr, __VA_ARGS__) #define outl(x) cout << (x) << '\n' template < class A, class B> inline bool chmax(A &a, B b){ return b>a ? a=b,1 : 0;} template < class A, class B> inline bool chmin(A &a, B b){ return b<a ? a=b,1 : 0;} inline bool inside( int y, int x, int H, int W){ return (y>=0 && x>=0 && y<H && x<W);} inline bool inside( int x, int W){ return (0 <= x && x < W); } const int dx[] = {1, 0, -1, 0, 1, 1, -1, -1}; const int dy[] = {0, 1, 0, -1, -1, 1, 1, -1}; typedef long long ll; typedef pair< int , int > pii; typedef vector< int > vi; static constexpr int INF = 0x3f3f3f3f; static constexpr int LIM = 100010; #define LIM 100010 struct Team { int id, p; explicit Team( int i=0, int p=0): id(i), p(p) {} inline bool operator < ( const Team &x) const { return (p == x.p) ? (id >= x.id) : (p < x.p); } inline bool operator > ( const Team &x) const { return (p == x.p) ? (id <= x.id) : (p > x.p); } }; using TeamList = vector<Team>; static constexpr int ST_SIZE = (1 << 18); struct SegTree { vector<Team> dat[ST_SIZE]; // 配列をセグ木のノードとする int size; const Team *src; explicit SegTree( int N, Team a[]) : src(a){ for (size=1; size < N; size *= 2); initSize(0, 0, size); rep(i, N) { update(i, a[i]); } } void initSize( int k, int l, int r) { dat[k].resize(r-l); if (r - l == 1) return ; int mid = (l+r) / 2; initSize(2*k+1, l, mid); initSize(2*k+2, mid, r); } /* void init(int k, int l, int r) { printf("%d %d %d\n", k, l, r); if (r - l == 1) dat[k].push_back(src[k]); else { int lch = 2*k + 1; int rch = 2*k + 2; int mid = (l+r) / 2; init(lch, l, mid); init(rch, mid, r); dat[k].resize(r-l); merge(lch, rch, k); } } */ void add( int i, int v) { i += size-1; const Team &tmp = dat[i][0]; dat[i][0] = Team(tmp.id, tmp.p + v); while (i > 0) { i = (i-1) / 2; merge(2*i+1, 2*i + 2, i); } } void update( int i, Team v) { i += size - 1; dat[i][0] = v; while (i > 0) { i = (i-1) / 2; merge(2*i + 1, 2*i + 2, i); } } void merge( int lch, int rch, int to) { std::merge(dat[lch].begin(), dat[lch].end(), dat[rch].begin(), dat[rch].end(), dat[to].begin(), greater<Team>() ); } Team operator [] ( int i) const { return dat[i+size-1][0]; } vector<Team>& at( int i) { return dat[i]; } }; int N; Team tmp[LIM]; signed main() { cin.tie(0), ios::sync_with_stdio( false ); int N, Q; cin >> N >> Q; rep(i, LIM) { tmp[i] = Team(i, 0); } SegTree seg(N, tmp); while (Q--) { int op, a, b; cin >> op; if (op == 0) { cin >> a >> b; --a; seg.add(a, b); } else { cin >> a; --a; const Team &x = seg.at(0)[a]; cout << x.id+1 << ' ' << x.p << '\n' ; } } } |
ステータス
項目 | データ |
---|---|
問題 | 0009 - プログラミングコンテスト II |
ユーザー名 | Mintows |
投稿日時 | 2018-08-07 11:22:58 |
言語 | C++11 |
状態 | Wrong Answer |
得点 | 0 |
ソースコード長 | 3732 Byte |
最大実行時間 | 2000 ms |
最大メモリ使用量 | 31500 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 0 / 18 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
in01.txt | AC | 22 ms | 7392 KB |
1
|
in02.txt | WA | 27 ms | 7604 KB |
1
|
in03.txt | AC | 28 ms | 7424 KB |
1
|
in04.txt | AC | 23 ms | 7380 KB |
1
|
in05.txt | TLE | 2000 ms | 31016 KB |
1
|
in06.txt | TLE | 2000 ms | 31032 KB |
1
|
in07.txt | TLE | 2000 ms | 31060 KB |
1
|
in08.txt | TLE | 2000 ms | 31076 KB |
1
|
in09.txt | AC | 25 ms | 7416 KB |
1
|
in10.txt | AC | 27 ms | 7496 KB |
1
|
in11.txt | TLE | 2000 ms | 31128 KB |
1
|
in12.txt | WA | 41 ms | 7976 KB |
1
|
in13.txt | TLE | 2000 ms | 31468 KB |
1
|
in14.txt | TLE | 2000 ms | 31488 KB |
1
|
in15.txt | TLE | 2000 ms | 31500 KB |
1
|
in16.txt | TLE | 2000 ms | 19096 KB |
1
|
in17.txt | TLE | 2000 ms | 31432 KB |
1
|
in18.txt | TLE | 2000 ms | 31328 KB |
1
|
in19.txt | TLE | 2000 ms | 19056 KB |
1
|
in20.txt | TLE | 2000 ms | 10660 KB |
1
|
in21.txt | WA | 1288 ms | 10860 KB |
1
|
in22.txt | TLE | 2000 ms | 13612 KB |
1
|
in23.txt | WA | 786 ms | 10860 KB |
1
|
in24.txt | TLE | 2000 ms | 13748 KB |
1
|