/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 2ms 540.0 KiB
#2 Wrong Answer 2ms 540.0 KiB
#3 Wrong Answer 2ms 540.0 KiB

Code

#include<bits/stdc++.h>
using namespace std;
const long long M=5e5,MOD=1e9+7;
typedef long long ll;


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t=1;
    cin>>t;
    int cas=1;
    while(t--){
    	int n;
    	cin>>n;
    	//cout<<cas<<" ";
    	cas++;
    	vector<int>a(n);
    	for(auto &i:a)cin>>i;
    	sort(a.begin(),a.end());
    	vector<int>dis;
    	for(int i=1;i<n;i++){
    		dis.push_back(a[i]-a[0]);
    	}
    	int mx=1;
    	multiset<int>d;
    	/**for(int i=0;i<n;i++)d.insert(a[i]);
    	auto iii=d.upper_bound(1);
    	cout<<*iii<<endl;**/
    	//continue;
    	for(int id:dis){
    		//cout<<id<<" ---\n";
    		//if(id!=5)continue;
    		multiset<int>st;
    		for(auto i:a)st.insert(i);
    		vector<pair<int,int>>pi;
    		multiset<int>st1;
    		while((int)st.size()>1){
    			auto it=st.begin();
    			int c=*it;
    			st.erase(it);
    			if(st.find(c+id)!=st.end()){
    				pi.push_back({c,c+id});
    				st.erase(st.find(c+id));
    			}
    			else{
    				st1.insert(c);
    			}
    			
    		}
    		//for(auto ii:pi)cout<<ii.first<<" "<<ii.second<<endl;
    		
    	for(auto i:st)st1.insert(i);
    	//cout<<st1.size()<<endl;
    		map<int,vector<int>>group;
    		int l=0;
    		for(auto it:pi){
    			group[l].push_back(it.first);
    			group[l].push_back(it.second);
    			l++;
    		}
    		/**for(int kk=0;kk<l;kk++){
    			for(auto it:group[kk])cout<<it<<" ";
    			cout<<endl;
    		}**/
    		bool flag=true;
    		while((int)st1.size()>0){
    			int f=1;
    			for(int s=0;s<l;s++){
    				if((int)group[s].size()==0)continue;
    				if((int)st1.size()==0  && (int)group[0].size()!=(int)group[s].size()){
    				for(auto kk:group[s])st1.insert(kk);
    				group[s].clear();
    				continue;
    					
    				}
    				auto it=st1.upper_bound(pi[s].first-1);
    				if(it==st1.end() && s==0){
    					flag=false;
    					break;
    					
    				}
    				if(it!=st1.end()&&*it>pi[s].second){
    					if(s==0){
    						flag=false;
    						break;
    					}	
    			}
    			if((int)group[s].size()==0)continue;
    			f=0;
    			if(it==st1.end() || *it>pi[s].second){
    				for(auto kk:group[s])st1.insert(kk);
    				group[s].clear();
    				continue;
    			}
    			group[s].push_back(*it);
    			st1.erase(it);
    			
    		}
    		if(f){
    			break;
    		}
    		}

    		if(!flag or (int)group[0].size()==0)continue;
    		int cur=(int)group[0].size();
    		int sum=0;
    		int x=1;
    		for(int cc=0;cc<l;cc++){
    			if((int)group[cc].size()==0)continue;
    			sum+=(int)group[cc].size();
    			x&=(cur==(int)group[cc].size());
    			
    		}
    		//cout<<x<<" "<<cur<<" "<<sum<<endl;
    		if(x && sum==n){
    			mx=max(mx,n/cur);
    		}
    		
    	
    	}
    	cout<<mx<<"\n";
    	}
    	
    	   
    return 0;
 
}

Information

Submit By
Type
Submission
Problem
P1162 Roy and Maximum Partition
Language
C++17 (G++ 13.2.0)
Submit At
2025-01-24 19:57:53
Judged At
2025-01-24 19:57:53
Judged By
Score
10
Total Time
2ms
Peak Memory
540.0 KiB