Submission #262804

#TimeUsernameProblemLanguageResultExecution timeMemory
262804uacoder123Robots (IOI13_robots)C++14
76 / 100
3081 ms25132 KiB
    #include <bits/stdc++.h>
    #include "robots.h"
    using namespace std;
    #define F first
    #define S second
    #define FOR(i,a,b) for (auto i = (a); i <= (b); ++i)
    #define NFOR(i,a,b) for(auto i = (a); i >= (b); --i)
    #define all(x) (x).begin(), (x).end()
    #define sz(x) int(x.size())
    #define mp(i,a) make_pair(i,a)
    #define pb(a) push_back(a)
    #define bit(x,b) (x&(1LL<<b))
     
    typedef pair <int,int> ii;
    typedef pair <int,ii> iii;
    typedef vector <int> vi;
    int t,a,b;
    vector<ii> v;
    vi v1,v2;
    int check(int m)
    {
      int j=0;
      multiset<int> s;
      for(int i=0;i<a;++i)
      {
        while(j!=t&&v[j].F<v1[i])
        {
          s.insert(v[j].S);
          j++;
        }
        int co=0;
        while(co!=m&&s.size())
        {
          s.erase(((--s.end())));
          co++;
        }
      }
      while(j!=t)
      {
        s.insert(v[j].S);
        j++;
      }
      for(int i=0;i<b;++i)
      {
        int co=0;
        while(co!=m&&s.size()&&(*s.begin())<v2[i])
        {
          s.erase((s.begin()));
          co++;
        }
      }
      if(s.size())
        return 0;
      return 1;
    }
    int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[])
    {
      t=T;
      a=A;
      b=B;
      for(int i=0;i<a;++i)
        v1.pb(X[i]);
      for(int i=0;i<b;++i)
        v2.pb(Y[i]);
      for(int i=0;i<t;++i)
        v.pb(mp(W[i],S[i]));
      sort(all(v));
      sort(all(v1));
      sort(all(v2));
      int l=1,r=t,ans=t+1;
      while(l<=r)
      {
        int m=(l+r)/2;
        if(check(m))
        {
          r=m-1;
          ans=m;
        }
        else
          l=m+1;
      }
      return (ans<=t)?ans:-1;
    }
#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...