Submission #962818

# Submission time Handle Problem Language Result Execution time Memory
962818 2024-04-14T08:37:29 Z simona1230 Robots (IOI13_robots) C++17
28 / 100
144 ms 19204 KB
#include <bits/stdc++.h>
#include "robots.h"
using namespace std;
int a,b,t,x[50000],y[50000],w[1000000],s[1000000];

bool check(int k)
{
    int idx=t-1;
    for(int i=a-1;i>=0;i--)
    {
        int cnt=0;
        while(idx>=0&&cnt<k&&w[idx]<x[i])
        {
            idx--;
            cnt++;
        }
    }

    if(idx==-1)return 1;
    return 0;
}
vector<int> va[50000],vb[50000];

int used[1000000];
bool smart(int k)
{
    int in=0;
    for(int i=0;i<a;i++)
    {
        int cnt=0;
        for(int id=0;id<va[i].size();id++)
        {
            int j=va[i][id];
            if(used[j]!=k)
            {
                used[j]=1;
                cnt++;
                in++;
            }
            if(cnt==k)break;
        }
    }

    for(int i=0;i<b;i++)
    {
        int cnt=0;
        for(int id=0;id<vb[i].size();id++)
        {
            int j=vb[i][id];
            if(used[j]!=k)
            {
                used[j]=1;
                cnt++;
                in++;
            }
            if(cnt==k)break;
        }
    }
    if(in==t)return 1;
    return 0;
}

bool cmpa(int i,int j)
{
    return s[i]>s[j];
}
bool cmpb(int i,int j)
{
    return w[i]>w[j];
}

int putaway(int A,int B,int T,int X[],int Y[],int W[],int S[])
{
    a=A;
    b=B;
    t=T;
    for(int i=0;i<a;i++)
        x[i]=X[i];
    for(int i=0;i<b;i++)
        y[i]=Y[i];
    for(int i=0;i<t;i++)
        w[i]=W[i],s[i]=S[i];

    sort(x,x+a);
    sort(y,y+b);

    if(a+b==2&&t==2)
    {
        if(a==2)
        {
            sort(w,w+t);
            if(x[0]>w[0]&&x[1]>w[1])return 1;
            if(x[1]>w[1])return 2;
            return -1;
        }

        if(b==2)
        {
            sort(s,s+t);
            if(y[0]>s[0]&&y[1]>s[1])return 1;
            if(y[1]>s[1])return 2;
            return -1;
        }

        if(x[0]>w[0]&&y[0]>s[1]||x[0]>w[1]&&y[0]>s[0])return 1;
        if(x[0]<=w[0]&&y[0]<=s[0]||x[0]<=w[1]&&y[0]<=s[1])return -1;
        return 2;
    }

    if(b==0)
    {
        sort(w,w+t);
        int l=1,r=t;
        int ans=-1;
        while(l<=r)
        {
            int m=(l+r)/2;
            if(check(m))
            {
                ans=m;
                r=m-1;
            }
            else l=m+1;
        }

        return ans;
    }

    for(int i=0;i<a;i++)
    {
        for(int j=0;j<t;j++)
        {
            if(x[i]>w[j])va[i].push_back(j);
        }
        sort(va[i].begin(),va[i].end(),cmpa);
    }

    for(int i=0;i<b;i++)
    {
        for(int j=0;j<t;j++)
        {
            if(y[i]>s[j])vb[i].push_back(j);
        }
        sort(vb[i].begin(),vb[i].end(),cmpb);
    }

    int l=1,r=t;
    int ans=-1;
    while(l<=r)
    {
        int m=(l+r)/2;
        if(smart(m))
        {
            ans=m;
            r=m-1;
        }
        else l=m+1;
    }

    return ans;
}


Compilation message

robots.cpp: In function 'bool smart(int)':
robots.cpp:31:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |         for(int id=0;id<va[i].size();id++)
      |                      ~~^~~~~~~~~~~~~
robots.cpp:47:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |         for(int id=0;id<vb[i].size();id++)
      |                      ~~^~~~~~~~~~~~~
robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:105:21: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
  105 |         if(x[0]>w[0]&&y[0]>s[1]||x[0]>w[1]&&y[0]>s[0])return 1;
      |            ~~~~~~~~~^~~~~~~~~~~
robots.cpp:106:22: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
  106 |         if(x[0]<=w[0]&&y[0]<=s[0]||x[0]<=w[1]&&y[0]<=s[1])return -1;
      |            ~~~~~~~~~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 14684 KB Output is correct
2 Correct 2 ms 14684 KB Output is correct
3 Correct 2 ms 14684 KB Output is correct
4 Correct 2 ms 14684 KB Output is correct
5 Correct 3 ms 14684 KB Output is correct
6 Correct 2 ms 14684 KB Output is correct
7 Correct 2 ms 14684 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 14684 KB Output is correct
2 Correct 2 ms 14684 KB Output is correct
3 Correct 3 ms 14684 KB Output is correct
4 Correct 136 ms 19048 KB Output is correct
5 Correct 127 ms 19204 KB Output is correct
6 Correct 21 ms 19032 KB Output is correct
7 Correct 131 ms 19048 KB Output is correct
8 Correct 144 ms 19052 KB Output is correct
9 Correct 138 ms 19028 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 14684 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 14684 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 14680 KB Output isn't correct
2 Halted 0 ms 0 KB -