QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#138888#3589. Invested MoneyRedex89WA 1ms3576kbC++232.9kb2023-08-12 13:00:282023-08-12 13:00:34

Judging History

This is the latest submission verdict.

  • [2023-08-12 13:00:34]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 3576kb
  • [2023-08-12 13:00:28]
  • Submitted

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, ll> semana;
ll dia;

ll getMin(ll elapsed){
    if(elapsed==30&&dia==4)return 0;
    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 = 1;
    if(res == 6 && elapsed != 0)
        delta = 2;
    else if(res == 0 && elapsed != 0)
        delta = 1;

    if(elapsed == 30 || elapsed == 0){ 
            return delta;
    }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 an = 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;

        an = min(an, getMin(d));
    //    an = getMin(d);
        //  if(an==0)
      //cout<<"d = "<<d<<" an = "<<an<<" mod7 = "<<d%7<<ENDL;
    }
    
    cout<<an<<ENDL;

    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3576kb

input:

Sat 5
5 4 3 1 1

output:

25

result:

ok single line: '25'

Test #2:

score: -100
Wrong Answer
time: 1ms
memory: 3540kb

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:

1

result:

wrong answer 1st lines differ - expected: '0', found: '1'