Submission #1017131

#TimeUsernameProblemLanguageResultExecution timeMemory
1017131davieduBank (IZhO14_bank)C11
71 / 100
1079 ms8784 KiB
#include <stdio.h> #include <string.h> int dp[1<<20], r[1<<20]; int pay[20], notes[20]; int main(){ memset(dp, -1, sizeof(dp)); int n, m; scanf("%d %d", &n, &m); for (int i=0; i<n; i++) scanf("%d", &pay[i]); for (int i=0; i<m; i++) scanf("%d", &notes[i]); int ans=0; for (int i=0; i<n; i++){ for (int mask=1; mask<(1<<m); mask++){ int p=-2; int c=-1; for (int j=0; j<m; j++){ if (mask & (1 << j)){ if (dp[mask ^ (1 << j)] > p){ p = dp[mask ^ (1 << j)]; c = j; } } } int d = mask ^ (1 << c); int v = r[d] + notes[c]; if (dp[d] == i) dp[mask] = i, r[mask] = v; else if (dp[d] == i-1){ if (v == pay[i]) dp[mask] = i, r[mask] = 0; else dp[mask] = i-1, r[mask] = v; } if (dp[mask] == n-1) ans = 1; } } printf("%s\n", (ans? "YES" : "NO")); return 0; }

Compilation message (stderr)

bank.c: In function 'main':
bank.c:10:5: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     scanf("%d %d", &n, &m);
      |     ^~~~~~~~~~~~~~~~~~~~~~
bank.c:11:29: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     for (int i=0; i<n; i++) scanf("%d", &pay[i]);
      |                             ^~~~~~~~~~~~~~~~~~~~
bank.c:12:29: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     for (int i=0; i<m; i++) scanf("%d", &notes[i]);
      |                             ^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...