/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 2ms 532.0 KiB
#3 Accepted 2ms 532.0 KiB
#4 Accepted 2ms 532.0 KiB
#5 Accepted 1ms 320.0 KiB
#6 Accepted 1ms 532.0 KiB
#7 Accepted 1ms 416.0 KiB
#8 Accepted 1ms 400.0 KiB
#9 Accepted 2ms 532.0 KiB
#10 Accepted 2ms 532.0 KiB
#11 Accepted 4ms 340.0 KiB
#12 Accepted 5ms 532.0 KiB
#13 Time Exceeded ≥4096ms ≥532.0 KiB
#14 Time Exceeded ≥4098ms ≥536.0 KiB

Code

/*
 *   Copyright (c) 2025 Emon Thakur
 *   All rights reserved.
 */
#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> alldiv(51);
void alldivisor()
{
    for(int i=2;i<=50;i++)
    {
        for(int j=i+i;j<=50;j+=i) alldiv[j].push_back(i);
    }
}

bool check(vector<int>a,vector<pair<int,int>>v,int group,int groupsize)
{
    if(a.size()==0) return true;
    int pergroup = a.size()/group;
    for(int i=0;i<a.size();i++)
    {
        int grpno = i/pergroup;
        if(a[i]>=v[grpno].first && a[i]<=v[grpno].second) continue;
        return false;
    }
    //for(auto e:v) cout<<e.first<<' '<<e.second<<endl;
    return true;
}

bool ok(vector<int>a,vector<pair<int,int>>&v,int n,int group,int groupsize,int d)
{
    if(v.size()==group)
    {
        return check(a,v,group,groupsize);
    }
    bool ans = false;
    for(int i=0;i<a.size();i++)
    {
        for(int j=i+1;j<a.size();j++)
        {
            if(j>i+1 && a[j]==a[j-1]) continue;
            if(a[j]-a[i]!=d) continue;
            v.push_back({a[i],a[j]});
            vector<int> aa = a;
            aa.erase(aa.begin()+j);
            aa.erase(aa.begin()+i);
            ans |= ok(aa,v,n,group,groupsize,d);
            v.pop_back();
        }
    }
    return ans;
}

void solve()
{
    int n; cin >> n;
    vector<int> a(n);
    for(int i=0;i<n;i++) cin >> a[i];
    set<int> dif;
    sort(a.begin(),a.end());
    for(int i=1;i<n;i++) dif.insert(a[i]-a[0]);
    for(int groupsize:alldiv[n])
    {
        int group = n/groupsize;
        for(int e:dif)
        {
            vector<pair<int,int>> v;
            if(ok(a,v,n,group,groupsize,e))
            {
                cout<<group<<'\n';
                return;
            }
        }
    }
    cout<<1<<'\n';
}

int main()
{
    ios::sync_with_stdio(false); cin.tie(nullptr);
    alldivisor();
    int t; cin >> t; while(t--) solve();
}

Information

Submit By
Type
Submission
Problem
P1162 Roy and Maximum Partition
Language
C++17 (G++ 13.2.0)
Submit At
2025-02-16 20:47:48
Judged At
2025-02-17 12:41:50
Judged By
Score
50
Total Time
≥4098ms
Peak Memory
≥536.0 KiB