Submission #595495

# Submission time Handle Problem Language Result Execution time Memory
595495 2022-07-13T19:13:24 Z Deepesson Uplifting Excursion (BOI22_vault) C++17
0 / 100
198 ms 4200 KB
#include <bits/stdc++.h>
#define MAX 1000005
int maximo[MAX];
int bonus = MAX/2;
typedef std::pair<int,int> pii;
int main()
{
    long long N,M;
    std::cin>>N>>M;
    if(abs(M)>bonus){
        std::cout<<"impossible\n";
        return 0;
    }
    for(auto&x:maximo)x=-(1e6);
    maximo[bonus]=0;
    for(int i=-N;i<=N;++i){
        int c;
        std::cin>>c;
        if(!c)continue;
        int valor=abs(i);
        if(!valor){
            for(auto&x:maximo)x+=c;
            continue;
        }
        std::deque<int> vals[valor];
        ///Da direita para a esquerda
        if(i>0){
            for(int j=0;j!=MAX-1;++j){
                int mod = j%valor;
                int kok = j/valor;
                int v = -1;
                for(auto&x:vals[mod]){
                    v=std::max(v,x+kok);
                }
                vals[mod].push_back(maximo[j]-kok);
                if(vals[mod].size()>c)vals[mod].pop_front();
                maximo[j]=std::max(maximo[j],v);
            }
        }else if(i<0){
            for(int j=MAX-1;j!=-1;--j){
                int mod = j%valor;
                int kok = j/valor;
                int v = -1;
                for(auto&x:vals[mod]){
                    v=std::max(v,x-kok);
                }
                vals[mod].push_back(maximo[j]+kok);
                if(vals[mod].size()>c)vals[mod].pop_front();
                maximo[j]=std::max(maximo[j],v);
            }
        }
    }
    ///como proceder caso x=0?
    if(maximo[M+bonus]<=0){
        std::cout<<"impossible\n";
        return 0;
    }
    std::cout<<maximo[M+bonus]<<"\n";
}

Compilation message

vault.cpp: In function 'int main()':
vault.cpp:36:36: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |                 if(vals[mod].size()>c)vals[mod].pop_front();
      |                    ~~~~~~~~~~~~~~~~^~
vault.cpp:48:36: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   48 |                 if(vals[mod].size()>c)vals[mod].pop_front();
      |                    ~~~~~~~~~~~~~~~~^~
# Verdict Execution time Memory Grader output
1 Correct 80 ms 4196 KB Output is correct
2 Incorrect 62 ms 4200 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 80 ms 4196 KB Output is correct
2 Incorrect 62 ms 4200 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 198 ms 4200 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 198 ms 4200 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 198 ms 4200 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 80 ms 4196 KB Output is correct
2 Incorrect 62 ms 4200 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 198 ms 4200 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 80 ms 4196 KB Output is correct
2 Incorrect 62 ms 4200 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 198 ms 4200 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 80 ms 4196 KB Output is correct
2 Incorrect 62 ms 4200 KB Output isn't correct
3 Halted 0 ms 0 KB -