제출 #1290279

#제출 시각아이디문제언어결과실행 시간메모리
1290279stapanulocu1축제 (IOI25_festival)C++20
5 / 100
52 ms9576 KiB
#include <bits/stdc++.h>
using namespace std;

struct te {
    
    long long p, poz;
};

vector<te> p[5];
int c[5];
long long a;

    vector<int> r;
    
bool solve6(vector<int> &P,
 vector<int> &T) {
    for(int i = 0; i < P.size(); ++i) {
        if(a < ((a - 1LL * P[i]) * (1LL * T[i]))) {
            return false;
        }
    }
    
    return false;
}

vector<int> max_coupons(int A, vector<int> P,
 vector<int> T) {
     r.clear();
     for(int i =0; i < 5; ++i) {
        p[i].clear();
        c[i] = 0;
     }
     
    for(int i = 0; i < P.size(); ++i) {
        te st;
        st.p = P[i];
        st.poz = i;
    
        p[T[i]].push_back(st);
    }
    for(int i = 1; i <= 4; ++i) {
        sort(p[i].begin(), p[i].end(), [](const te& a, const te& b) {
        return a.p < b.p;      // otherwise compare by x
    });
    }
    
    a = A;
    
    if(solve6(P, T)) {
        return r;
    }
    
    while(1) {
        long long maxN = 0;
        long long rezz = -1, nr = 0;
        for(long long i = 4; i > 0; --i) {
            if(c[i] < p[i].size() && a >= p[i][c[i]].p && ((a - p[i][c[i]].p)*i) > maxN) {
                
                rezz = p[i][c[i]].poz;
                maxN = (a - p[i][c[i]].p) * i;
                nr = i;
            }
        }
        if(rezz == -1) {
            break;
        }
        c[nr]++;
        a = maxN;
        
        r.push_back(rezz);
        
        if(r.size() == P.size())
            break;
    }
    
    return r;
 }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...