Submission #00207
ソースコード
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 | //header{{{ #pragma GCC optimize("Ofast") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/tag_and_trait.hpp> #include <ext/pb_ds/trie_policy.hpp> using namespace __gnu_pbds; using namespace std; #define rep(i,n) for(int i=0;i<(n);++i) #define reps(i,n) for(int i=1;i<=(n);++i) #define all(x) (x).begin(),(x).end() #define Fixed fixed << setprecision(12) #define int int_fast64_t using pii = pair< int , int >; constexpr int INF = 0x3f3f3f3f; constexpr long long LINF = 0x3f3f3f3f3f3f3f3fLL; constexpr int mod1 = 1e9+7; constexpr int mod2 = 998244353; template < class Func> class FixPoint : Func { public : explicit constexpr FixPoint(Func&& f) noexcept : Func(forward<Func>(f)) {} template < class ... Args> constexpr decltype(auto) operator()(Args&&... args) const { return Func::operator()(* this , std::forward<Args>(args)...); } }; template < class Func> static inline constexpr decltype(auto) makeFixPoint(Func&& f) noexcept { return FixPoint<Func>{forward<Func>(f)}; } template < class A, class B> inline bool chmax(A &a, const B &b) { return b > a && (a = b, true ); } template < class A, class B> inline bool chmin(A &a, const B &b) { return b < a && (a = b, true ); } template < class T> using min_heap = priority_queue<T,vector<T>,greater<T> >; template < class T> using max_heap = priority_queue<T>; template < class A, class B> using umap = unordered_map<A,B>; template < class T> using Set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; template < class K, class V> using Umap = gp_hash_table<K, V>; using Trie = trie<string, null_type, trie_string_access_traits<>, pat_trie_tag, trie_prefix_search_node_update>; inline int square( int a){ return a * a;} inline int updiv( int a, int b){ return (a + b - 1) / b; } constexpr int dx[] = {1,0,-1,0,1,1,-1,-1}; constexpr int dy[] = {0,-1,0,1,1,-1,-1,1}; //}}} signed main(){ cin.tie(nullptr); ios_base::sync_with_stdio( false ); cout.setf(ios_base::fixed); cout.precision(10); int n, q; string s; cin >> n >> q >> s; vector< int > div ; for ( int i = 1; i * i <= n; ++i){ if (n % i == 0){ div .emplace_back(i); if (i * i != n){ div .emplace_back(n / i); } } } sort(all( div )); int siz = div .size(); vector<vector<vector< int > > > v(siz); vector< int > ok(siz); rep(i,siz){ v[i].resize( div [i], vector< int >(26)); } vector< int > str(n); rep(i,n){ str[i] = s[i] - 'a' ; } rep(i,siz){ //div[i]ずつに分割 rep(j, div [i]){ for ( int k = j; k < n; k += div [i]){ v[i][j][str[k]]++; } if (v[i][j][str[j]] == n / div [i]){ ok[i]++; } } } rep(loop,q){ int p; char c; cin >> p >> c; --p; c = c - 'a' ; if (str[p] != c){ rep(i,siz){ int pos = p % div [i]; if (v[i][pos][str[p]] == n / div [i]){ ok[i]--; } v[i][pos][str[p]]--; v[i][pos][c]++; if (v[i][pos][c] == n / div [i]){ ok[i]++; } } } str[p] = c; rep(i,siz){ if (ok[i] == div [i]){ cout << div [i] << '\n' ; break ; } } } return 0; } |
ステータス
項目 | データ |
---|---|
問題 | 0011 - イワシロの祈り |
ユーザー名 | 虚無 |
投稿日時 | 2020-08-17 11:58:17 |
言語 | C++17 |
状態 | Accepted |
得点 | 12 |
ソースコード長 | 3671 Byte |
最大実行時間 | 419 ms |
最大メモリ使用量 | 93108 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 12 / 12 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
in1 | AC | 29 ms | 604 KB |
1
|
in2 | AC | 22 ms | 788 KB |
1
|
in3 | AC | 20 ms | 6264 KB |
1
|
in4 | AC | 17 ms | 8576 KB |
1
|
in5 | AC | 21 ms | 8524 KB |
1
|
in6 | AC | 17 ms | 8604 KB |
1
|
in7 | AC | 17 ms | 8548 KB |
1
|
in8 | AC | 22 ms | 8492 KB |
1
|
in9 | AC | 16 ms | 8564 KB |
1
|
in10 | AC | 21 ms | 556 KB |
1
|
in11 | AC | 17 ms | 628 KB |
1
|
in12 | AC | 17 ms | 448 KB |
1
|
in13 | AC | 23 ms | 524 KB |
1
|
in14 | AC | 21 ms | 604 KB |
1
|
in15 | AC | 30 ms | 6584 KB |
1
|
in16 | AC | 88 ms | 61236 KB |
1
|
in17 | AC | 21 ms | 680 KB |
1
|
in18 | AC | 20 ms | 888 KB |
1
|
in19 | AC | 21 ms | 1416 KB |
1
|
in20 | AC | 19 ms | 1380 KB |
1
|
in21 | AC | 273 ms | 62060 KB |
1
|
in22 | AC | 282 ms | 62696 KB |
1
|
in23 | AC | 281 ms | 63452 KB |
1
|
in24 | AC | 157 ms | 64208 KB |
1
|
in25 | AC | 163 ms | 64716 KB |
1
|
in26 | AC | 68 ms | 29888 KB |
1
|
in27 | AC | 25 ms | 7420 KB |
1
|
in28 | AC | 95 ms | 11516 KB |
1
|
in29 | AC | 93 ms | 12152 KB |
1
|
in30 | AC | 419 ms | 91336 KB |
1
|
in31 | AC | 391 ms | 91800 KB |
1
|
in32 | AC | 417 ms | 92516 KB |
1
|
in33 | AC | 405 ms | 93108 KB |
1
|