QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#57780 | #4398. Luxury cruise ship | qinjianbin | AC ✓ | 2ms | 3808kb | C++17 | 700b | 2022-10-22 21:31:31 | 2022-10-22 21:31:32 |
Judging History
answer
#include<bits/stdc++.h>
#define rep(i, a, b) for(int i = (a); i < (b); i++)
#define _for(i, a, b) for(int i = (a); i <= (b); i++)
using namespace std;
typedef long long ll;
const int N = 1e3 + 10;
int f[N];
int main()
{
memset(f, 0x3f, sizeof f);
f[0] = 0;
int w[] = {7, 31};
_for(i, 1, 1e3)
rep(j, 0, 2)
if(i - w[j] >= 0)
f[i] = min(f[i], f[i - w[j]] + 1);
int T; scanf("%d", &T);
while(T--)
{
ll x; scanf("%lld", &x);
if(x <= 365)
{
printf("%d\n", f[x] > 1e9 ? -1 : f[x]);
continue;
}
if(f[x % 365] <= 1e9) printf("%lld\n", x / 365 + f[x % 365]);
else printf("%lld\n", x / 365 - 1 + f[(x % 365) + 365]);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 3808kb
input:
1000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101...
output:
-1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 2 -1 -1 -1 -1 -1 -1 3 -1 -1 -1 -1 -1 -1 4 -1 -1 1 -1 -1 -1 5 -1 -1 2 -1 -1 -1 6 -1 -1 3 -1 -1 -1 7 -1 -1 4 -1 -1 -1 8 -1 -1 5 -1 -1 2 9 -1 -1 6 -1 -1 3 10 -1 -1 7 -1 -1 4 11 -1 -1 8 -1 -1 5 12 -1 -1 9 -1 -1 6 13 -1 3 10 -1 -1 7 14 -1 4 11 -1 -1 8 15 -1 5 12 -1 -...
result:
ok 1000 lines