Submission #414775

#TimeUsernameProblemLanguageResultExecution timeMemory
414775MeGustaElArroz23Detecting Molecules (IOI16_molecules)C++14
0 / 100
1083 ms204 KiB
#include "molecules.h"
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef pair<ll,ll> pii;
typedef vector<pii> vii;
typedef vector<vii> vvii;

void debug(auto v){
    for (auto x:v) cerr << x << ' ';
    cerr << '\n';
}

vector<int> find_subset(int l, int u, vector<int> w) {
    //cerr<<1;
    int n=w.size();
    vii v(n);
    //cerr<<4;
    for (int i=0;i<n;i++) v[i]=pii{w[i],i};
    //cerr<<3;
    sort(v.begin(),v.end());
    vii pref(n+1);
    pref[0]=pii{0,0};
    //cerr<<2;
    for (int i=1;i<=n;i++){
        pref[i].first=pref[i-1].first+v[i-1].first;
        pref[i].second=pref[i-1].second+v[n-i].first;
    }
    //cerr<<0;
    for (int i=1;i<=n;i++){
        if ((l>=pref[i].first and l<=pref[i].second) or (u>=pref[i].first and u<=pref[i].second) or (l<=pref[i].first and u>=pref[i].second)){
            //cerr<<i;
            vi sol(i);
            for (int j=0;j<i;j++) sol[j]=j;
            ll suma=pref[i].first;
            int counter=0;
            while(suma<u){
                suma-=v[counter].first;
                suma+=v[n-counter-1].first;
                sol[counter]=n-counter-1;
            }
            //debug(sol);
            //cerr<<0;
            for (int j=0;j<i;j++) sol[j]=v[sol[j]].second;
            //debug(sol);
            //cerr<<1;
            sort(sol.begin(),sol.end());
            vector<int> solu(i);
            for (int j=0;j<i;j++) solu[j]=sol[j];
            return solu;
        }
    }
    return vector<int>(0);
}

Compilation message (stderr)

molecules.cpp:13:12: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
   13 | void debug(auto v){
      |            ^~~~
#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...