답안 #488671

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
488671 2021-11-20T00:10:21 Z i_am_noob Sparklers (JOI17_sparklers) C++17
0 / 100
1 ms 1228 KB
#pragma GCC target("avx2")
#include<bits/stdc++.h>
//#include<x86intrin.h>
//#include<immintrin.h>
//#pragma GCC optimize("unroll-loops")
using namespace std;

#define ll long long
#define int ll
#define ull unsigned long long
#define ld long double
#define rep(a) rep1(i,a)
#define rep1(i,a) rep2(i,0,a)
#define rep2(i,b,a) for(int i=(b); i<((int)(a)); i++)
#define rep3(i,b,a) for(int i=(b); i>=((int)(a)); i--)
#define all(a) a.begin(),a.end()
#define pii pair<int,int>
#define pb push_back
//#define inf 1010000000
#define inf 4000000000000000000
#define eps 1e-9
#define sz(a) ((int)a.size())
#define pow2(x) (1ll<<(x))
//#define ceiling(a,b) (((a)+(b)-1)/(b))
#ifdef i_am_noob
#define bug(...) cerr << "#" << __LINE__ << ' ' << #__VA_ARGS__ << "- ", _do(__VA_ARGS__)
template<typename T> void _do(T && x) {cerr << x << endl;}
template<typename T, typename ...S> void _do(T && x, S&&...y) {cerr << x << ", "; _do(y...);}
#else
#define bug(...) 826
#endif

inline char readchar(){
    const int maxn=1000000;
    static char buf[maxn],*p=buf,*q=buf;
    if(p==q&&(q=(p=buf)+fread(buf,1,maxn,stdin))==buf) return EOF;
    else return *p++;
}
inline int readint(){
    int c=readchar(),x=0,neg=0;
    while((c<'0'||c>'9')&&c!='-'&&c!=EOF) c=readchar();
    if(c=='-') neg=1,c=readchar();
    while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+(c^'0'),c=readchar();
    return neg?-x:x;
}

const int Mod=1000000007,Mod2=998244353;
const int MOD=Mod;
const int maxn=100005;
//i_am_noob
//#define v8si __attribute__ (( vector_size(32) )) signed
int n,k,s,a[maxn];

pii Merge(pii x, pii y){
    return {max(x.first,y.first-x.second),x.second+y.second};
}

void orzck(){
    cin >> n >> k >> s;
    k--;
    rep(n) cin >> a[i];
    int l=1,r=490e8/s;
    while(l<r){
        int mid=l+r>>1;
        vector<int> vec1={0},vec2={0};
        rep3(i,k-1,0) vec1.pb(2*s*mid-(a[i+1]-a[i]));
        rep2(i,k+1,n) vec2.pb(2*s*mid-(a[i]-a[i-1]));
        rep2(i,1,sz(vec1)) vec1[i]+=vec1[i-1];
        rep2(i,1,sz(vec2)) vec2[i]+=vec2[i-1];
        bool dp[1005][1005];
        dp[0][0]=1;
        rep2(i,1,sz(vec1)) dp[0][i]=dp[0][i-1]&&(vec1[i]>=0);
        bug(mid);
        rep2(i,1,sz(vec2)) rep1(j,sz(vec1)){
            dp[i][j]=dp[i-1][j]&&(vec2[i]+vec1[j]>=0);
            if(j) dp[i][j]|=dp[i][j-1]&&(vec2[i]+vec1[j]>=0);
            bug(i,j,dp[i][j]);
        }
        if(dp[sz(vec2)-1][sz(vec1)-1]) r=mid;
        else l=mid+1;
        continue;
        bool flag=1;
        if(*min_element(all(vec1))+*max_element(all(vec2))<0) flag=0;
        if(*max_element(all(vec1))+*min_element(all(vec2))<0) flag=0;
        if(!flag){
            l=mid+1;
            continue;
        }
        int cur=1,maxx=vec1[0];
        rep(sz(vec2)){
            if(maxx+vec2[i]<0){
                flag=0;
                break;
            }
            while(cur<sz(vec1)&&vec1[cur]+vec2[i]>=0) maxx=max(maxx,vec1[cur]),cur++;
            if(cur==sz(vec1)) break;
        }
        reverse(all(vec1));
        reverse(all(vec2));
        cur=1,maxx=vec1[0];
        rep(sz(vec2)){
            if(maxx+vec2[i]<0){
                flag=0;
                break;
            }
            while(cur<sz(vec1)&&vec1[cur]+vec2[i]>=0) maxx=max(maxx,vec1[cur]),cur++;
            if(cur==sz(vec1)) break;
        }
        if(flag) r=mid;
        else l=mid+1;
    }
    cout << l << "\n";
}

signed main(){
    ios_base::sync_with_stdio(0),cin.tie(0);
    #ifdef i_am_noob
    freopen("input1.txt","r",stdin);
    freopen("output1.txt","w",stdout);
    freopen("output2.txt","w",stderr);
    #endif
    cout << fixed << setprecision(15);
    orzck();
    return 0;
}

Compilation message

sparklers.cpp: In function 'void orzck()':
sparklers.cpp:64:18: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   64 |         int mid=l+r>>1;
      |                 ~^~
sparklers.cpp:30:18: warning: statement has no effect [-Wunused-value]
   30 | #define bug(...) 826
      |                  ^~~
sparklers.cpp:73:9: note: in expansion of macro 'bug'
   73 |         bug(mid);
      |         ^~~
sparklers.cpp:30:18: warning: statement has no effect [-Wunused-value]
   30 | #define bug(...) 826
      |                  ^~~
sparklers.cpp:77:13: note: in expansion of macro 'bug'
   77 |             bug(i,j,dp[i][j]);
      |             ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1228 KB Output is correct
2 Correct 1 ms 1228 KB Output is correct
3 Correct 1 ms 1228 KB Output is correct
4 Correct 1 ms 1228 KB Output is correct
5 Correct 1 ms 1228 KB Output is correct
6 Correct 1 ms 1228 KB Output is correct
7 Correct 1 ms 1228 KB Output is correct
8 Correct 1 ms 1228 KB Output is correct
9 Correct 1 ms 1228 KB Output is correct
10 Correct 1 ms 1228 KB Output is correct
11 Correct 1 ms 1228 KB Output is correct
12 Correct 1 ms 1228 KB Output is correct
13 Correct 1 ms 1228 KB Output is correct
14 Correct 1 ms 1228 KB Output is correct
15 Correct 1 ms 1228 KB Output is correct
16 Correct 1 ms 1228 KB Output is correct
17 Correct 1 ms 1228 KB Output is correct
18 Correct 1 ms 1228 KB Output is correct
19 Incorrect 1 ms 1228 KB Output isn't correct
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1228 KB Output is correct
2 Correct 1 ms 1228 KB Output is correct
3 Correct 1 ms 1228 KB Output is correct
4 Correct 1 ms 1228 KB Output is correct
5 Correct 1 ms 1228 KB Output is correct
6 Correct 1 ms 1228 KB Output is correct
7 Correct 1 ms 1228 KB Output is correct
8 Correct 1 ms 1228 KB Output is correct
9 Correct 1 ms 1228 KB Output is correct
10 Correct 1 ms 1228 KB Output is correct
11 Correct 1 ms 1228 KB Output is correct
12 Correct 1 ms 1228 KB Output is correct
13 Correct 1 ms 1228 KB Output is correct
14 Correct 1 ms 1228 KB Output is correct
15 Correct 1 ms 1228 KB Output is correct
16 Correct 1 ms 1228 KB Output is correct
17 Correct 1 ms 1228 KB Output is correct
18 Correct 1 ms 1228 KB Output is correct
19 Incorrect 1 ms 1228 KB Output isn't correct
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1228 KB Output is correct
2 Correct 1 ms 1228 KB Output is correct
3 Correct 1 ms 1228 KB Output is correct
4 Correct 1 ms 1228 KB Output is correct
5 Correct 1 ms 1228 KB Output is correct
6 Correct 1 ms 1228 KB Output is correct
7 Correct 1 ms 1228 KB Output is correct
8 Correct 1 ms 1228 KB Output is correct
9 Correct 1 ms 1228 KB Output is correct
10 Correct 1 ms 1228 KB Output is correct
11 Correct 1 ms 1228 KB Output is correct
12 Correct 1 ms 1228 KB Output is correct
13 Correct 1 ms 1228 KB Output is correct
14 Correct 1 ms 1228 KB Output is correct
15 Correct 1 ms 1228 KB Output is correct
16 Correct 1 ms 1228 KB Output is correct
17 Correct 1 ms 1228 KB Output is correct
18 Correct 1 ms 1228 KB Output is correct
19 Incorrect 1 ms 1228 KB Output isn't correct
20 Halted 0 ms 0 KB -