結果
問題 | No.346 チワワ数え上げ問題 |
ユーザー |
|
提出日時 | 2024-10-20 19:45:54 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 6 ms / 2,000 ms |
コード長 | 4,013 bytes |
コンパイル時間 | 6,419 ms |
コンパイル使用メモリ | 335,196 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-10-20 19:46:04 |
合計ジャッジ時間 | 8,067 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
#include<bits/stdc++.h>using namespace std;#define itn int#define rep(i,n) for(long long i=0;i<(long long)n;i++)#define reps(i,n) for(long long i=1;i<=(long long)n;i++)#define repi(i,n) for(int i=0;i<(int)n;i++)#define loop(i,l,r) for(long long i=(long long)l;i<=(long long)r;i++)#define loopi(i,l,r) for(int i=(int)l;i<=(int)r;i++)#define drep(i,n) for(long long i=(long long)n-1;i>=0;i--)#define drepi(i,n) for(int i=(int)n-1;i>=0;i--)#define dreps(i,n) for(int i=(int)n;i>=1;i--)#define dloop(i,l,r) for(long long i=(long long)l;i>=(long long)r;i--)#define dloopi(i,l,r) for(int i=(int)l;i>=(int)r;i--)#define all(v) v.begin(), v.end()#define rall(v) v.rbegin(), v.rend()#define yn(x) cout << (x? "Yes":"No") << endl;#define cou(x) cout << x << endl;#define emp emplace_back#pragma GCC target ("avx,avx2")//四則演算#pragma GCC optimize("O3")#pragma GCC optimize("unroll-loops")//ループ#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")//浮動小数点const long long mod=998244353LL;const long long mods=1000000007LL;const double inf=numeric_limits<double>::infinity();const int kaz=1000000005;const long long yab=2500000000000000000LL;const long long aho =-yab;const long double eps=1.0e-14L;const long double pi=acosl(-1.0L);using ll=long long;using st=string;using P=pair<ll,ll>;using tup=tuple<ll,ll,ll>;using vi=vector<ll>;using vin=vector<int>;using vc=vector<char>;using vb=vector<bool>;using vd=vector<double>;using vs=vector<string>;using vp=vector<P>;using sp=set<P>;using si=set<ll>;using vvi=vector<vector<ll>>;using vvin=vector<vin>;using vvc=vector<vc>;using vvb=vector<vb>;using vvvi=vector<vvi>;using vvvin=vector<vvin>;const int dx[4]={0,1,0,-1};const int dy[4]={1,0,-1,0};const vector<int> ex = {-1, -1, -1, 0, 0, 1, 1, 1};const vector<int> ey = {-1, 0, 1, -1, 1, -1, 0, 1};template<typename T>istream&operator>>(istream&is,vector<T>&v){for(T&in:v)is>>in;return is;}template<typename T>ostream&operator<<(ostream&os,vector<T>v){rep(i,v.size())os<<v[i]<<(i+1!=v.size()?" ":"\n");return os;}template<typename T1,typename T2>void co(bool x,T1 y,T2 z){if(x)cout << y << endl;else cout << z << endl;}template<typename T>bool chmax(T &a, T b){if(a<b){a=b;return true;}return false;}template <typename T, typename U>T ceil(T x, U y) {return (x > 0 ? (x + y - 1) / y : x / y);}template <typename T, typename U>T floor(T x, U y) {return (x > 0 ? x / y : (x - y + 1) / y);}template<typename T>bool chmin(T &a, T b){if(a>b){a=b;return true;}return false;}template<typename T>void print(vector<T> &a){for(int i=0;i<a.size();i++){cout << a[i];if(i==(long long)a.size()-1)cout << endl;else cout << " ";}}template<typename T>void her(vector<T> &a){for(auto &g:a)g--;}vector<long long> fac,finv,invs;// テーブルを作る前処理void COMinit(int MAX,int MOD) {fac.resize(MAX);finv.resize(MAX);invs.resize(MAX);fac[0] = fac[1] = 1;finv[0] = finv[1] = 1;invs[1] = 1;for (int i = 2; i < MAX; i++){fac[i] = fac[i - 1] * i % MOD;invs[i] = MOD - invs[MOD%i] * (MOD / i) % MOD;finv[i] = finv[i - 1] * invs[i] % MOD;}}// 二項係数計算long long COM(int n, int k,int MOD){if (n < k) return 0;if (n < 0 || k < 0) return 0;return fac[n] * (finv[k] * finv[n - k] % MOD) % MOD;}ll mypow(ll x,ll y){ll ret=1;while(y>0){if(y&1)ret=ret*x%mod;x=x*x%mod;y>>=1;}return ret;}ll nopow(ll x,ll y){ll ret=1;while(y>0){if(y&1)ret*=x;x*=x;y>>=1;}return ret;}#include <atcoder/all>using namespace atcoder;using minta=modint998244353;using mintb=modint1000000007;int main(){cin.tie(nullptr);string s;cin >> s;int n=s.size();vi ruic(n+1),ruiw(n+1);reps(i,n)ruic[i]=ruic[i-1]+(s[i-1]=='c');drep(i,n)ruiw[i]=ruiw[i+1]+(s[i]=='w');ll res=0;rep(i,n){if(s[i]=='w'){res+=ruic[i+1]*ruiw[i+1];}}cout << res << endl;}