Submission #1360816

#TimeUsernameProblemLanguageResultExecution timeMemory
1360816chubyxdxdGift Boxes (EGOI25_giftboxes)C++20
100 / 100
34 ms6132 KiB
#include <bits/stdc++.h>

#define pb push_back
#define sc second
#define ff first
#define all(a) a.begin(),a.end()
#define mem(a,i) memset(a,i,sizeof a)
#define forr(i,n) for(int i=0;i<n;i++)
#define nl '\n'
using namespace std;
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<int> vi;


int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t,n;
    cin>>t>>n;//number of teams and contestants
    int v[n+1];
    int last[t+1];
    mem(last,0);
    for(int i=0;i<n;i++){
      cin>>v[i];
      last[v[i]]=max(last[v[i]],i);
    }
    int pivpref=-1;
    int pivsuff=-1;
    int vis[t+1];
    mem(vis,0);
    for(int i=0;i<n;i++){
      if(vis[v[i]]==1){
	pivpref=i-1;
	break;
      }
      vis[v[i]]=1;
    }
    mem(vis,0);
    for(int i=n-1;i>=0;i--){
      if(vis[v[i]]==1){
	pivsuff=i+1;
	break;
      }
      vis[v[i]]=1;
    }
    //cout<<pivpref<<" "<<pivsuff<<endl;
    int ans=0;
    int l=-1;
    int r=-1;
    if(pivpref+1<n-pivsuff){
      ans=n-pivsuff;
      l=0;
      r=pivsuff-1;
    }
    else{
      ans=pivpref+1;
      l=pivpref+1;
      r=n-1;
    }
    int max_last=0;
    for(int i=0;i<=pivpref;i++){
      max_last=max(max_last,last[v[i]]);
      //dos casos
      int currpref = i+1;
      int currsuff = pivsuff;
      
      if(max_last>=pivsuff){
	currsuff=max_last+1;
      }
      if(ans<currpref+n-currsuff){
	ans=currpref+n-currsuff;
	l=currpref;
	r=currsuff-1;
      }
    }
    // cout<<ans<<endl;
    cout<<l<<" "<<r<<endl;
}

// pineapple
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...