Submission #1290272

#TimeUsernameProblemLanguageResultExecution timeMemory
1290272stapanulocu1Festival (IOI25_festival)C++20
0 / 100
50 ms9576 KiB
#include <bits/stdc++.h>
using namespace std;

struct te {
    
    int p, poz;
};

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

    vector<int> r;

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;
    
    while(1) {
        long long maxN = 0;
        int rezz = 0, nr = 0;
        for(int 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;
            }
        }
        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...