234992026-01-23 20:50:48abcdIntervallumok (45 pont)cpp17Accepted 45/4565ms4496 KiB
#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;

int main(){
    int n;cin>>n;
    vector<int> a(n);
    for(int i=0;i<n;i++)cin>>a[i];
    vector<pii> ans;
    vector<vector<int>> starts;
    for(int db=1;db<n;db++){
        if(n%db)continue;
        int len=n/db;
        int mx=0;
        for(int i=0;i<n;i+=len){
            mx=max(mx,a[i+len-1]-a[i]);
        }
        vector<int> cur;
        cur.push_back(a[len-1]-mx);
        int prev=a[len-1];
        bool ok=true;
        for(int i=len;i<n;i+=len){
            int jo=a[i+len-1]-mx, rossz=prev+1;
            int start=max(jo,rossz);
            int r=jo>=rossz ? 0 : rossz-jo;
            int end=a[i+len-1]+r;
            if(i+len<n&&end>=a[i+len])ok=false;
            prev=end;
            cur.push_back(start);
        }
        if(ok){
            ans.push_back({db,mx});
            starts.push_back(cur);
        }
    }
    cout<<ans.size()<<'\n';
    for(int i=0;i<(int)ans.size();i++){
        cout<<ans[i].first<<' '<<ans[i].second<<'\n';
        for(int x:starts[i])cout<<x<<' ';
        cout<<'\n';
    }
}
SubtaskSumTestVerdictTimeMemory
base45/45
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted1/11ms316 KiB
4Accepted1/11ms316 KiB
5Accepted1/12ms316 KiB
6Accepted1/14ms508 KiB
7Accepted1/145ms1132 KiB
8Accepted2/21ms316 KiB
9Accepted2/230ms1192 KiB
10Accepted2/234ms1692 KiB
11Accepted2/232ms1408 KiB
12Accepted2/234ms1688 KiB
13Accepted2/232ms1440 KiB
14Accepted2/24ms564 KiB
15Accepted2/26ms828 KiB
16Accepted2/28ms820 KiB
17Accepted2/212ms1076 KiB
18Accepted2/212ms892 KiB
19Accepted2/246ms1820 KiB
20Accepted2/264ms4332 KiB
21Accepted2/265ms4496 KiB
22Accepted2/261ms3660 KiB
23Accepted2/264ms4172 KiB
24Accepted2/227ms820 KiB
25Accepted2/237ms2096 KiB
26Accepted2/243ms3308 KiB
27Accepted2/239ms988 KiB