QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#139044 | #3589. Invested Money | Redex89 | WA | 1ms | 3572kb | C++23 | 2.8kb | 2023-08-12 16:58:42 | 2023-08-12 16:58:46 |
Judging History
answer
#include <bits/stdc++.h>
// Pura gente del coach moy
using namespace std;
#define ENDL '\n'
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define sz(x) (int) x.size()
#define FOR(x, b) for(int x = 0; x < b; x++)
#define FORE(x, a, b) for(int x = a; x <= b; x++)
#define FORR(x, a, b) for(int x = a; x >= b; x--)
#define deb(x) cerr << #x << " = " << x << '\n';
#define deb2(x, y) cerr << #x << " = " << x << ", " << #y << " = " << y << '\n';
#define _ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
const ll MOD = 1e9+7, INF = 1e18;
unordered_map<string, int> semana;
int dia;
ll getMin(ll elapsed){
ll deposito = dia - (elapsed % 7);
if(deposito < 0)
deposito += 7;
// deb2(dia, deposito);
ll ans;
//Si han pasado 30 dias y hoy no es sabado ni domingo
if(elapsed == 0){
if(dia == 5) return 31;
if(dia == 4) return 32;
return 30;
}
if(elapsed == 30 && dia != 0 && dia != 6)
return 0;
//Si han pasado mas de 30 dias ya hubo renovacion
else if(elapsed > 30){
//Si se deposito un antes del jueves la proxima renovacion
//fue el segundo dia despues 30 dias +
if(deposito < 4){
elapsed -= 30;
deposito += 2;
}
//Si se deposito un jueves la proxima renovacion fue un lunes 32 dias +
if(elapsed > 30 && deposito == 4){
elapsed = abs(elapsed - 32);
deposito = 1;
//Si se deposito un viernes la proxima renovacion fue un lunes 31 dias +
}else if(elapsed > 30 && deposito == 5){
deposito = 1;
elapsed -= 31;
}
elapsed %= 91;
while(elapsed > 30){
elapsed -= 30;
deposito += 2;
}
}
ll res = (deposito + 30) % 7;
ll delta = 0;
if(res == 6)
delta = 2;
else if(res == 0 || res ==2)
delta = 1;
if(elapsed > 30 && (res == 6 || res == 0))
return delta;
if(elapsed == 30 || elapsed == 0){
return 0;
}else{
if(res > 0 && res < 6) ans = 30 - elapsed;
else if(res == 6) ans = 30 - elapsed + 2;
else ans = 30 - elapsed + 1;
}
return ans;
}
int main(){_
string t;
ll n;
ll d;
ll ans = 1e18;
cin >> t >> n;
semana["Sun"] = 0;
semana["Mon"] = 1;
semana["Tue"] = 2;
semana["Wed"] = 3;
semana["Thu"] = 4;
semana["Fri"] = 5;
semana["Sat"] = 6;
dia = semana[t];
FOR(i, n){
cin >> d;
ans = min(ans, getMin(d));
}
cout<<ans<<ENDL;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3464kb
input:
Sat 5 5 4 3 1 1
output:
25
result:
ok single line: '25'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3472kb
input:
Fri 91 60 86 79 109 74 120 50 105 121 15 80 24 52 127 57 4 9 102 93 91 46 122 22 8 21 31 67 81 95 88 115 43 78 37 128 28 38 112 99 130 106 49 116 39 108 119 16 84 18 129 114 10 44 123 113 45 29 14 72 23 87 126 56 77 58 30 51 63 70 101 100 7 92 107 64 85 53 25 98 17 71 35 66 32 73 65 94 42 36 59 11
output:
0
result:
ok single line: '0'
Test #3:
score: -100
Wrong Answer
time: 0ms
memory: 3572kb
input:
Sat 91 33 86 37 15 50 101 52 59 10 53 124 80 23 102 39 95 106 26 60 32 16 65 81 71 122 64 123 22 29 116 46 129 79 117 113 30 74 43 75 109 108 58 121 18 8 40 73 57 31 67 115 68 128 88 36 120 89 100 94 110 44 9 99 54 11 5 66 107 47 114 24 61 127 96 85 25 103 82 17 78 130 12 45 38 72 19 93 51 131 87 92
output:
0
result:
wrong answer 1st lines differ - expected: '2', found: '0'