提出 #72897701


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define F first
#define S second
#define mp make_pair
#define eb emplace_back
#define pb push_back
#define rep(X,a,b) for(ll X=a;X<b;++X)
#define ALL(a) (a).begin(), (a).end()
#define SZ(a) (ll)(a).size()
#define mem(a) memset(a,0,sizeof(a))
#define INF 9e18
#define EPS 1e-22
#define lc id<<1 
#define rc (id<<1)+1
#define ln seg[id].lnd
#define rn seg[id].rnd
#define error(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args); }
typedef long long ll;
typedef pair<ll,ll> pll;
typedef pair<pll,pll> pllll;
typedef long double ld;
typedef pair<ld,ld> pdd;

void err(istream_iterator<string> it) {}
template<typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
	cerr << *it << " = " << a << endl;
	err(++it, args...);
}

pdd operator-(const pdd &a,const pdd &b){
    return mp(a.F-b.F,a.S-b.S);
}

double cross(const pdd &a,const pdd &b){
    return a.F*b.S-a.S*b.F;
}

struct maxFenwick {
    int n;
    vector<int> s;
    int lowbit(int x) { return x & -x; }
    maxFenwick(int _n) {
        n = _n + 1;
        s.clear(), s.resize(n, 0);
    }
    void update(int i, int v) {
        for (; i < n; i += lowbit(i))
            s[i] =max(s[i],v);
    }
    int query(int x) {
        int pre = -1;
        for (; x; x -= lowbit(x))
            pre=max(pre, s[x]);
        return pre;
    }
    maxFenwick(vector<int> a) {
        n = a.size();
        s.clear(), s.resize(n + 1, 0);
        for (int i = 1; i <= n; i++)
            update(i, a[i - 1]);
    }
};

typedef struct linkNode{
    int val;
    struct linkNode *back=nullptr,*next=nullptr;
}LinkNode;

typedef struct ball{
    ll size;
    struct ball *boss=nullptr;
}Ball;

Ball *find(Ball *_ball){
    if(_ball==nullptr)return nullptr;
    if(_ball->boss==_ball)return _ball;
    Ball *ret=find(_ball->boss);
    return ret;
}

void ballunion(Ball *u,Ball *v){
    Ball *ub=find(u),*vb=find(v);
    if(ub==vb)return;
    if(ub->size>vb->size)vb->boss=ub,ub->size+=vb->size;
    else ub->boss=vb,vb->size+=ub->size;
}

ll gcd(ll _a,ll _b){return _b?gcd(_b,_a%_b):_a;}

double dqpow(double _x, ll _y){
    double _output=1;
    while(_y){
        if(_y&1)_output*=_x;
        _x*=_x;
        _y>>=1;
    }
    return _output;
}

ll qpow(ll _x, ll _y,ll _P){
    ll _output=1;
    while(_y){
        if(_y&1)_output=(_output*_x)%_P;
        _x=(_x*_x)%_P;
        _y>>=1;
    }
    return _output;
}
    
ll v2(ll _x){
    return _x&-_x;
}

struct Node{
    ll info;
};

Node seg[800005];

void pull(ll id){seg[id].info=min(seg[lc].info,seg[rc].info);}

void modify(ll pos,ll v,ll L,ll R,ll id){
    if(pos==L&&R==pos){
        seg[id].info=v;
        return;
    }
    ll M=L+R>>1;
    if(pos<=M)modify(pos, v, L, M, lc);
    else modify(pos, v, M + 1, R, rc);
    pull(id);
}

ll query(ll l,ll r,ll L,ll R,ll id){
    if(l <= L && R <= r) return seg[id].info;
    int M=L+R>>1;
    if(r <= M) return query(l, r, L, M, lc);
    else if(l > M) return query(l, r, M + 1, R, rc);
    else return min(query(l, r, L, M, lc),query(l, r, M + 1, R, rc));
}

char s[3005];
ll a[3005][3005],nxt[3005][3005],dp[3005][3005];

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    ll T;
    scanf("%lld",&T);
    while(T--){
        ll n,c;
        scanf("%lld%lld",&n,&c);
        --c;
        rep(i,0,n){
            scanf("%s",s);
            rep(j,0,n){
                a[i][j]=s[j]=='#';
            }
        }
        rep(j,0,n){
            ll pre=-1;
            rep(i,0,n)if(a[i][j]){
                if(pre!=-1)nxt[pre][j]=i;
                pre=i;
            }
            nxt[pre][j]=n;
        }
        for(ll i=n-1;i>=0;--i){
            rep(j,0,n){
                if(i==n-1)dp[i][j]=j==c;
                else if(a[i][j]&&nxt[i][j]!=n){
                    if(dp[nxt[i][j]][j])dp[i][j]=1;
                    else dp[i][j]=0;
                }
                else{
                    if(j&&dp[i+1][j-1]||dp[i+1][j]||j<n-1&&dp[i+1][j+1])dp[i][j]=1;
                    else dp[i][j]=0;
                }
                if(!i)printf("%lld",dp[i][j]);
            }
        }
        printf("\n");
    }
    
    return 0;
}

提出情報

提出日時
問題 E - Climbing Silver
ユーザ elmulberreed
言語 C++23 (GCC 15.2.0)
得点 450
コード長 4636 Byte
結果 AC
実行時間 236 ms
メモリ 215236 KiB

コンパイルエラー

./Main.cpp: In function 'void err(std::istream_iterator<std::__cxx11::basic_string<char> >)':
./Main.cpp:27:35: warning: unused parameter 'it' [-Wunused-parameter]
   27 | void err(istream_iterator<string> it) {}
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~^~
./Main.cpp: In function 'void modify(ll, ll, ll, ll, ll)':
./Main.cpp:131:11: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  131 |     ll M=L+R>>1;
      |          ~^~
./Main.cpp: In function 'll query(ll, ll, ll, ll, ll)':
./Main.cpp:139:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  139 |     int M=L+R>>1;
      |           ~^~
./Main.cpp: In function 'int main()':
./Main.cpp:181:25: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
  181 |                     if(j&&dp[i+1][j-1]||dp[i+1][j]||j<n-1&&dp[i+1][j+1])dp[i][j]=1;
      |                        ~^~~~~~~~~~~~~~
./Main.cpp:181:58: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
  181 |                     if(j&&dp[i+1][j-1]||dp[i+1][j]||j<n-1&&dp[i+1][j+1])dp[i][j]=1;
      |                                                     ~~~~~^~~~~~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 450 / 450
結果
AC × 1
AC × 48
セット名 テストケース
Sample sample_01.txt
All sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 1 ms 3916 KiB
test_01.txt AC 12 ms 3952 KiB
test_02.txt AC 17 ms 3784 KiB
test_03.txt AC 26 ms 3756 KiB
test_04.txt AC 33 ms 3776 KiB
test_05.txt AC 41 ms 3844 KiB
test_06.txt AC 50 ms 3764 KiB
test_07.txt AC 60 ms 3844 KiB
test_08.txt AC 70 ms 3844 KiB
test_09.txt AC 82 ms 3844 KiB
test_10.txt AC 94 ms 3908 KiB
test_11.txt AC 107 ms 3904 KiB
test_12.txt AC 120 ms 3896 KiB
test_13.txt AC 124 ms 3912 KiB
test_14.txt AC 92 ms 4148 KiB
test_15.txt AC 74 ms 9416 KiB
test_16.txt AC 73 ms 9416 KiB
test_17.txt AC 236 ms 214964 KiB
test_18.txt AC 199 ms 215116 KiB
test_19.txt AC 199 ms 214968 KiB
test_20.txt AC 232 ms 214976 KiB
test_21.txt AC 177 ms 215124 KiB
test_22.txt AC 117 ms 144580 KiB
test_23.txt AC 116 ms 144840 KiB
test_24.txt AC 199 ms 215152 KiB
test_25.txt AC 198 ms 214928 KiB
test_26.txt AC 199 ms 214984 KiB
test_27.txt AC 131 ms 172060 KiB
test_28.txt AC 183 ms 214988 KiB
test_29.txt AC 207 ms 215236 KiB
test_30.txt AC 206 ms 215140 KiB
test_31.txt AC 157 ms 215036 KiB
test_32.txt AC 218 ms 214976 KiB
test_33.txt AC 212 ms 215068 KiB
test_34.txt AC 232 ms 215124 KiB
test_35.txt AC 221 ms 214976 KiB
test_36.txt AC 182 ms 192356 KiB
test_37.txt AC 184 ms 202956 KiB
test_38.txt AC 179 ms 201400 KiB
test_39.txt AC 174 ms 198356 KiB
test_40.txt AC 211 ms 215140 KiB
test_41.txt AC 211 ms 214968 KiB
test_42.txt AC 203 ms 215044 KiB
test_43.txt AC 209 ms 215124 KiB
test_44.txt AC 204 ms 215096 KiB
test_45.txt AC 176 ms 215068 KiB
test_46.txt AC 189 ms 215036 KiB
test_47.txt AC 195 ms 215124 KiB