Submission #314614

#TimeUsernameProblemLanguageResultExecution timeMemory
314614DymoDetecting Molecules (IOI16_molecules)C++14
100 / 100
62 ms8696 KiB

#include<bits/stdc++.h>
#include "molecules.h"
using namespace std;


#define pb	push_back
#define ll long long
#define pll pair<ll,ll>
#define ff first
#define ss second
#define endl "\n"
const ll maxn=4e5+50;
const ll mod =1e9+7;
const ll base=517;
pll a[maxn];
ll f[maxn];

vector<int> find_subset(int l, int u, vector<int>w)
{
    ll n=w.size();
    for (int i=0;i<n;i++)
    {
        a[i].ff=w[i];
        a[i].ss=i;
    }
    sort(a,a+n);
    for (int i=0;i<n;i++)
    {
        if (i) f[i]=f[i-1]+a[i].ff;
        else f[i]=a[i].ff;
    }
    for (int i=1;i<=n;i++)
    {
         if (f[i-1]>=l&&f[i-1]<=u)
         {
             vector<int>ans1;
             for (int j=0;j<i;j++)
             {
                 ans1.pb(a[j].ss);
             }
             sort(ans1.begin(),ans1.end());
            return ans1;

         }
         else if (f[i-1]<l&&i!=n&&f[n-1]-f[n-1-i]>=l)
         {
             ll t1=i-1;
             ll t2=n;
             ll ans=f[i-1];
             while (t1>=0&&ans<l)
             {
                  ans-=a[t1].ff;
                  t1--;
                  t2--;
                  ans+=a[t2].ff;
             }
             vector<int>ans1;
             ll m=i;
             for (int j=0;j<m;j++)
             {
                if (t1>=0)
                {
                   ans1.pb(a[t1].ss);

                    t1--;
                }
                else if (t2<n)
                {
                     ans1.pb(a[t2].ss);
                    t2++;

                }
             }
             sort(ans1.begin(),ans1.end());
            return ans1;


         }
    }
    vector<int> ans1;
    return ans1;
}
/*int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    if (fopen("GIDDY.inp", "r"))
    {
        freopen("GIDDY.inp", "r", stdin);
        freopen("GIDDY.out", "w", stdout) ;
    }

}*/
#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...