제출 #330072

#제출 시각아이디문제언어결과실행 시간메모리
330072KarliverBitaro the Brave (JOI19_ho_t1)C++14
100 / 100
382 ms89708 KiB
#include <bits/stdc++.h> #include <fstream> #define FIXED_FLOAT(x) std::fixed <<std::setprecision(10)<<(x) #define all(v) (v).begin(), ( v).end() using namespace std; #define forn(i, b) for (int i=0; i<b; ++i) using ll = long long; const int mod = (ll)998244353; #define PI acos(-1) typedef pair<int , int> pairs; typedef complex<ll> G; const int INF = 1e9 + 1 ; //const int N = 10; const double eps = 1e-7; int power(int a, int b){ if(!b) return 1; int c=power(a,b/2); c=(1LL*c*c)%mod; if(b%2) c=(1LL*c*a)%mod; return c; } int mul(int a, int b) { return (ll)a * b % mod; } struct Seg { int n; vector<int>s; Seg(const vector<int>& a) { this->n = a.size(); s.resize(4 * n); function<void(int, int, int)> build = [&](int p, int l, int r) { if(r - l == 1) { s[p] = a[l]; return; } int m = (l + r) / 2; build(2 * p, l, m); build(2 * p + 1, m, r); pull(p); }; build(1, 0, n); } void pull(int p) { s[p] = __gcd(s[2 * p], s[2 * p + 1]); } void range_g(int p, int l, int r, int il, int ir, int &ans) { if(l >= ir || r <= il)return; if(l >= il && r <= ir) { ans = __gcd(ans, s[p]); return; } int m = (l + r) / 2; range_g(2 * p, l, m, il, ir, ans); range_g(2 * p + 1, m, r, il, ir, ans); } int get_ans(int l, int r) { int ans = 0; range_g(1, 0, n, l, r, ans); return ans; } }; void done() { int n, sub; cin >> n >> sub; vector<int>a(n); for(int i = 0;i < n;++i) { cin >> a[i]; } Seg S(a); ll ans = 0; for(int i = 0;i <= n - sub;++i) { ans += S.get_ans(i, i + sub); } cout << ans << '\n'; } void solve() { int d, k; cin >> d >> k; auto ch = [&](int x, int y) { return ((ll)x * x + (ll)y * y <= (ll)d * d); }; int x = 0; int y = 0; int st = 0; } void another() { ll ans = 0; int n, w; cin >> n >> w; vector<string>s(n); forn(i, n)cin >> s[i]; vector<vector<int>> down(n, vector<int>(w, 0)); vector<vector<int>> le(n, vector<int>(w, 0)); for(int j = 0;j < w;++j) { for(int i = n - 1;i >= 0;--i) { if(s[i][j] == 'I')down[i][j]++; if(i != n - 1)down[i][j] += down[i + 1][j]; } } for(int i = 0;i < n;++i) { for(int j = w - 1;j >= 0;--j) { if(s[i][j] == 'O')le[i][j]++; if(j != w - 1)le[i][j] += le[i][j + 1]; } } forn(i, n) forn(j, w) { if(s[i][j] == 'J') { ans += down[i][j] * le[i][j]; } } cout << ans << '\n'; } void test_case() { int t; cin >> t; while(t--)done(); } int main() { ios::sync_with_stdio(NULL); cin.tie(0); cout.tie(0); another(); }

컴파일 시 표준 에러 (stderr) 메시지

joi2019_ho_t1.cpp: In function 'void solve()':
joi2019_ho_t1.cpp:106:10: warning: variable 'ch' set but not used [-Wunused-but-set-variable]
  106 |     auto ch = [&](int x, int y) {
      |          ^~
joi2019_ho_t1.cpp:109:9: warning: unused variable 'x' [-Wunused-variable]
  109 |     int x = 0;
      |         ^
joi2019_ho_t1.cpp:110:9: warning: unused variable 'y' [-Wunused-variable]
  110 |     int y = 0;
      |         ^
joi2019_ho_t1.cpp:111:9: warning: unused variable 'st' [-Wunused-variable]
  111 |     int st = 0;
      |         ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...