Submission #985182

# Submission time Handle Problem Language Result Execution time Memory
985182 2024-05-17T12:04:28 Z Faisal_Saqib Sequence (APIO23_sequence) C++17
28 / 100
649 ms 67440 KB
#include "sequence.h"
#include <bits/stdc++.h>

// #include "grader.cpp"

using namespace std;


const int LIM=2e3+10;
int pre[LIM][LIM];
const int MN=5e5+10;
int a[MN],l_[MN],r_[MN],eq_[MN];
int n;
map<int,vector<int>> ind;
void compute_pre()
{
  for(int i=1;i<=n;i++)
    pre[0][i]=0;
  for(int i=1;i<=n;i++)
  {
    for(int j=1;j<=n;j++)
    {
      pre[i][j]=pre[i-1][j]+(a[i-1]<=j);
    }
  }
}
int count_less(int l,int r,int x)
{
  return pre[r+1][x]-pre[l][x];
}
int count(int l,int r,int x)
{
  int tp=count_less(l,r,x)-count_less(l,r,x-1);
  // if(tp==4)
  //   cout<<"FOR "<<l<<' '<<r<<' '<<x<<endl;
  return tp;
}
int count_(int l,int r,int x)
{
  auto it=lower_bound(begin(ind[x]),end(ind[x]),l);
  auto it1=upper_bound(begin(ind[x]),end(ind[x]),r);
  return it1-it;
}
int solve_(int l,int r,int x)
{
  int cntp=count_(l,r,x);
  int len=(r-l+1);
  int cnt_p=len/2;
  if(cntp>=cnt_p)
  {
    return cntp;
  }
  else{
    return 0;
  }
}
int sequence(int NP, std::vector<int> AP) {
  n=NP;
  for(int i=0;i<n;i++)
    a[i]=AP[i];
  if(NP<LIM)
  {
    compute_pre();
    int ans=1;
    for(int l=0;l<n;l++)
    {
      for(int r=l+1;r<n;r++)
      {
        int s=0;
        int e=n+1;
        int len=(r-l+1);
        int flooor=(len-1)/2;
        /*
        if len is even
          then there are two medain = floor((len-1)/2) and ceil((len-1)/2)
        else if len is odd        
          single medain
        */
        while(s+1<e)
        {
          int mid=(s+e)/2;
          if(count_less(l,r,mid)<=flooor)
          {
            s=mid;
          }
          else{
            e=mid;
          }
        }
        ans=max(ans,count(l,r,e));
        if(len%2==0)
        {
          int ceill=flooor+1;
          s=0;
          e=n+1;
          while(s+1<e)
          {
            int mid=(s+e)/2;
            if(count_less(l,r,mid)<=ceill)
            {
              s=mid;
            }
            else{
              e=mid;
            }
          }
          ans=max(ans,count(l,r,e));
        }
      }
    }
    return ans;
    // cout<<ans<<endl;
  }
  else{
    for(int i=0;i<=n;i++)
      l_[i]=r_[i]=-1;
    for(int i=0;i<n;i++)
    {
      if(l_[a[i]]==-1)
        l_[a[i]]=i;
      r_[a[i]]=i;
    }
    int ans=1;
    for(int i=0;i<n;i++)
      ind[a[i]].push_back(i);
    for(int i=0;i<n;i++)
      ans=max(ans,solve_(l_[a[i]],r_[a[i]],a[i]));
    return ans;
  }
  return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 4444 KB Output is correct
4 Correct 1 ms 6492 KB Output is correct
5 Correct 2 ms 6492 KB Output is correct
6 Correct 1 ms 6488 KB Output is correct
7 Correct 1 ms 6492 KB Output is correct
8 Correct 1 ms 6492 KB Output is correct
9 Correct 1 ms 6492 KB Output is correct
10 Correct 1 ms 6492 KB Output is correct
11 Correct 1 ms 6492 KB Output is correct
12 Correct 1 ms 6492 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 4444 KB Output is correct
4 Correct 1 ms 6492 KB Output is correct
5 Correct 2 ms 6492 KB Output is correct
6 Correct 1 ms 6488 KB Output is correct
7 Correct 1 ms 6492 KB Output is correct
8 Correct 1 ms 6492 KB Output is correct
9 Correct 1 ms 6492 KB Output is correct
10 Correct 1 ms 6492 KB Output is correct
11 Correct 1 ms 6492 KB Output is correct
12 Correct 1 ms 6492 KB Output is correct
13 Correct 95 ms 19724 KB Output is correct
14 Correct 80 ms 19544 KB Output is correct
15 Correct 72 ms 19548 KB Output is correct
16 Correct 66 ms 19716 KB Output is correct
17 Correct 74 ms 19548 KB Output is correct
18 Correct 152 ms 19724 KB Output is correct
19 Correct 80 ms 19704 KB Output is correct
20 Correct 73 ms 19940 KB Output is correct
21 Correct 81 ms 19548 KB Output is correct
22 Correct 86 ms 19544 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 216 ms 47244 KB Output is correct
3 Incorrect 252 ms 47188 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB Output is correct
2 Correct 56 ms 15644 KB Output is correct
3 Incorrect 57 ms 14532 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 591 ms 67440 KB Output is correct
2 Correct 597 ms 67412 KB Output is correct
3 Incorrect 649 ms 65328 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 4444 KB Output is correct
4 Correct 1 ms 6492 KB Output is correct
5 Correct 2 ms 6492 KB Output is correct
6 Correct 1 ms 6488 KB Output is correct
7 Correct 1 ms 6492 KB Output is correct
8 Correct 1 ms 6492 KB Output is correct
9 Correct 1 ms 6492 KB Output is correct
10 Correct 1 ms 6492 KB Output is correct
11 Correct 1 ms 6492 KB Output is correct
12 Correct 1 ms 6492 KB Output is correct
13 Correct 95 ms 19724 KB Output is correct
14 Correct 80 ms 19544 KB Output is correct
15 Correct 72 ms 19548 KB Output is correct
16 Correct 66 ms 19716 KB Output is correct
17 Correct 74 ms 19548 KB Output is correct
18 Correct 152 ms 19724 KB Output is correct
19 Correct 80 ms 19704 KB Output is correct
20 Correct 73 ms 19940 KB Output is correct
21 Correct 81 ms 19548 KB Output is correct
22 Correct 86 ms 19544 KB Output is correct
23 Incorrect 62 ms 12600 KB Output isn't correct
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 4444 KB Output is correct
4 Correct 1 ms 6492 KB Output is correct
5 Correct 2 ms 6492 KB Output is correct
6 Correct 1 ms 6488 KB Output is correct
7 Correct 1 ms 6492 KB Output is correct
8 Correct 1 ms 6492 KB Output is correct
9 Correct 1 ms 6492 KB Output is correct
10 Correct 1 ms 6492 KB Output is correct
11 Correct 1 ms 6492 KB Output is correct
12 Correct 1 ms 6492 KB Output is correct
13 Correct 95 ms 19724 KB Output is correct
14 Correct 80 ms 19544 KB Output is correct
15 Correct 72 ms 19548 KB Output is correct
16 Correct 66 ms 19716 KB Output is correct
17 Correct 74 ms 19548 KB Output is correct
18 Correct 152 ms 19724 KB Output is correct
19 Correct 80 ms 19704 KB Output is correct
20 Correct 73 ms 19940 KB Output is correct
21 Correct 81 ms 19548 KB Output is correct
22 Correct 86 ms 19544 KB Output is correct
23 Correct 216 ms 47244 KB Output is correct
24 Incorrect 252 ms 47188 KB Output isn't correct
25 Halted 0 ms 0 KB -