Cleaning Tables Problem Code: CLETAB Codechef Solution

 #include <bits/stdc++.h>
using namespace std;
int main() {  
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  int t,c=0;
  cin>>t;
  while(t--){
    int n,m;
    cin>>n>>m;
    int order[401],table[201]={0};
    for(int i=0;i<m;i++){
      cin>>order[i];
    }
    int ans=0;
    for(int i=0;i<m;i++){
      int flag=0;
      for(int j=0;j<n;j++){
        if(table[j]==order[i]){flag=1;break;}
      }
      if(!flag){
        for(int j=0;j<n;j++){
          if(!table[j]){ans++;table[j]=order[i];flag=1;break;}
        }
      }
      if(!flag){
        int idx=0,val=-1;
        int vis[401]={0};
        for(int k=0;k<n;k++){
          int flag2=0;
          for(int x=i+1;x<m;x++){
            if(table[k]==order[x]){
              flag2=1;
              if(x>val&&vis[order[x]]==0){
                val=x,idx=k;
              }
              vis[order[x]]=1;
            }
          }
          if(!flag2){table[k]=order[i];ans++;flag=1;break;}
        }
        if(!flag){
          table[idx]=order[i];
          ans++;
        }
      }
    }
    cout<<ans;
    if(t)cout<<'\n';
  }
  return 0;
}

Comments