Submission #985170

# Submission time Handle Problem Language Result Execution time Memory
985170 2024-05-17T11:59:50 Z Faisal_Saqib Sequence (APIO23_sequence) C++17
28 / 100
611 ms 67160 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+1)/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 6500 KB Output is correct
5 Correct 1 ms 6492 KB Output is correct
6 Correct 1 ms 6492 KB Output is correct
7 Correct 1 ms 6492 KB Output is correct
8 Correct 2 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 2 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 6500 KB Output is correct
5 Correct 1 ms 6492 KB Output is correct
6 Correct 1 ms 6492 KB Output is correct
7 Correct 1 ms 6492 KB Output is correct
8 Correct 2 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 2 ms 6492 KB Output is correct
12 Correct 1 ms 6492 KB Output is correct
13 Correct 89 ms 19692 KB Output is correct
14 Correct 94 ms 19700 KB Output is correct
15 Correct 89 ms 19544 KB Output is correct
16 Correct 109 ms 19720 KB Output is correct
17 Correct 83 ms 19548 KB Output is correct
18 Correct 156 ms 19728 KB Output is correct
19 Correct 91 ms 19704 KB Output is correct
20 Correct 76 ms 19544 KB Output is correct
21 Correct 89 ms 19704 KB Output is correct
22 Correct 91 ms 19548 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 221 ms 47308 KB Output is correct
3 Incorrect 266 ms 47204 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 15620 KB Output is correct
3 Incorrect 57 ms 15552 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 599 ms 67104 KB Output is correct
2 Correct 611 ms 67160 KB Output is correct
3 Incorrect 608 ms 65332 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 6500 KB Output is correct
5 Correct 1 ms 6492 KB Output is correct
6 Correct 1 ms 6492 KB Output is correct
7 Correct 1 ms 6492 KB Output is correct
8 Correct 2 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 2 ms 6492 KB Output is correct
12 Correct 1 ms 6492 KB Output is correct
13 Correct 89 ms 19692 KB Output is correct
14 Correct 94 ms 19700 KB Output is correct
15 Correct 89 ms 19544 KB Output is correct
16 Correct 109 ms 19720 KB Output is correct
17 Correct 83 ms 19548 KB Output is correct
18 Correct 156 ms 19728 KB Output is correct
19 Correct 91 ms 19704 KB Output is correct
20 Correct 76 ms 19544 KB Output is correct
21 Correct 89 ms 19704 KB Output is correct
22 Correct 91 ms 19548 KB Output is correct
23 Incorrect 69 ms 12764 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 6500 KB Output is correct
5 Correct 1 ms 6492 KB Output is correct
6 Correct 1 ms 6492 KB Output is correct
7 Correct 1 ms 6492 KB Output is correct
8 Correct 2 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 2 ms 6492 KB Output is correct
12 Correct 1 ms 6492 KB Output is correct
13 Correct 89 ms 19692 KB Output is correct
14 Correct 94 ms 19700 KB Output is correct
15 Correct 89 ms 19544 KB Output is correct
16 Correct 109 ms 19720 KB Output is correct
17 Correct 83 ms 19548 KB Output is correct
18 Correct 156 ms 19728 KB Output is correct
19 Correct 91 ms 19704 KB Output is correct
20 Correct 76 ms 19544 KB Output is correct
21 Correct 89 ms 19704 KB Output is correct
22 Correct 91 ms 19548 KB Output is correct
23 Correct 221 ms 47308 KB Output is correct
24 Incorrect 266 ms 47204 KB Output isn't correct
25 Halted 0 ms 0 KB -