# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
155884 | 2019-10-01T14:54:58 Z | Ruxandra985 | 조교 (CEOI16_popeala) | C++14 | 1806 ms | 1052 KB |
#include <cstdio> #include <iostream> using namespace std; int dp[51][20001]; long long ok[20010]; int val[20010]; int biti1 (long long x){ int sol = 0; while (x){ sol = sol + (x&1); x/=2; } return sol; } int main() { FILE *fin = stdin; FILE *fout = stdout; int n,t,s,i,j,k; long long sum; fscanf (fin,"%d%d%d",&n,&t,&s); for (i=1;i<=t;i++){ fscanf (fin,"%d",&val[i]); val[i]+=val[i-1]; } for (i=1;i<=n;i++){ fgetc(fin); for (j=1;j<=t;j++) ok[j]=(long long)(fgetc(fin)-'0') * ((long long)1<<(i-1)) + ok[j]; } for (j=1;j<=s;j++){ for (i=j;i<=t;i++){ sum = ok[i]; dp[j][i] = 2000000000; for (k=i;k;k--){ sum = (sum & ok[k]); if (j-1<=k-1 && (j!=1 || k==1)) dp[j][i] = min (dp[j][i] , dp[j-1][k-1] + (val[i] - val[k-1]) * biti1(sum)); } } } for (j=1;j<=s;j++) fprintf (fout,"%d\n",dp[j][t]); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Incorrect | 3 ms | 376 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 253 ms | 636 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1806 ms | 1052 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Incorrect | 3 ms | 376 KB | Output isn't correct |