제출 #496013

#제출 시각아이디문제언어결과실행 시간메모리
496013DeepessonBank (IZhO14_bank)C++17
0 / 100
1 ms204 KiB
#include <bits/stdc++.h>
#define MAXN 21
#define MAXP 1100000
bool existe[MAXN][MAXP];
bool conseguiu=false;
long long precisa[MAXN];
int N,M;
long long valor[MAXN];
long long pessoa[MAXN];
void dp(int pos,long long pente,long long usados,long long total){
   // std::cout<<"Explora "<<pos<<" "<<pente<<" "<<total<<"\n";
    long long atual = total-usados;
    if(pos==N){
        conseguiu=true;
        return;
    }
    if(atual==pessoa[pos]){
        dp(pos+1,pente,total,total);
        return;
    }
    if(existe[pos][pente])return;
    existe[pos][pente]=true;
    for(int i=0;i!=M;++i){
        if(!(pente&(1<<i))){
            dp(pos,pente|(1<<i),usados,total+valor[i]);
        }
    }
}
int main()
{
    freopen("bank.in", "r", stdin);
	freopen("bank.out", "w", stdout);
    std::cin>>N>>M;
    for(int i=0;i!=N;++i){
        std::cin>>pessoa[i];
    }
    for(int i=0;i!=M;++i){
        std::cin>>valor[i];
    }
    dp(0,0,0,0);
    if(conseguiu){
        printf("YES\n");
    }else printf("NO\n");
}

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

bank.cpp: In function 'int main()':
bank.cpp:31:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |     freopen("bank.in", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
bank.cpp:32:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |  freopen("bank.out", "w", stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...