233492026-01-20 11:59:52abcdIntervallumok (45 pont)cpp17Hibás válasz 0/4586ms8284 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using pii=pair<ll,ll>;

int main(){
    ll n;cin>>n;
    vector<ll> vec(n+1),pref(n+1),dif(n+1);
    for(ll i=1;i<=n;i++){
        ll a;cin>>a;
        vec[i]=a;
        if(i==1){
            dif[1]=0;
            pref[1]=0;
        }else{
            dif[i]=a-vec[i-1]-1;
            pref[i]=pref[i-1]+dif[i]+1;
        }
    }
    dif[0] = (ll)2e18;
    vector<pii> ans;
    vector<vector<ll>> starts;
    ans.push_back({1,vec[n] - vec[1]});
    starts.push_back({vec[1]});
    for(ll ii=2;ii*ii<=n;ii++){
        if(n%ii)continue;
        vector<ll> iii;
        if(ii*ii==n) iii={ii};
        else iii={ii,n/ii};
        for(ll i:iii){
            ll len=0;
            vector<ll> kellmeg(n+1);
            for(ll j=i;j<=n;j+=i){
                len=max(len,vec[j]-vec[j-i+1]);
                kellmeg[j]=vec[j]-vec[j-i+1];
            }
            for(ll j=i;j<=n;j+=i){
                kellmeg[j]=len-kellmeg[j];
            }
            vector<ll> seged=dif,kezdo;
            bool ok=true;
            for(ll j=i;j<=n;j+=i){
                ll x=0;
                if(seged[j-i]>=kellmeg[j]){
                    kezdo.push_back(vec[j-i+1]-kellmeg[j]);
                    continue;
                }else{
                    x=kellmeg[j]-seged[j-i];
                    kezdo.push_back(vec[j-i+1]-seged[j-i]);
                }
                if(j==n){ok=false;break;}
                if(x>seged[j+1]){ok=false;break;}
                else seged[j+1]-=x;
            }
            if(ok){
                ans.push_back({i,len});
                starts.push_back(kezdo);
            }
        }
    }
    cout<<ans.size()<<'\n';
    for(ll i=0;i<(ll)ans.size();i++){
        cout<<ans[i].first<<' '<<ans[i].second<<'\n';
        for(ll j:starts[i])cout<<j<<'\n';
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/45
1Elfogadva0/01ms324 KiB
2Hibás válasz0/01ms500 KiB
3Hibás válasz0/11ms316 KiB
4Hibás válasz0/11ms316 KiB
5Hibás válasz0/12ms316 KiB
6Hibás válasz0/16ms628 KiB
7Hibás válasz0/154ms4300 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/241ms3952 KiB
10Hibás válasz0/241ms4028 KiB
11Hibás válasz0/239ms3812 KiB
12Hibás válasz0/241ms4092 KiB
13Hibás válasz0/239ms3816 KiB
14Hibás válasz0/24ms708 KiB
15Hibás válasz0/27ms960 KiB
16Hibás válasz0/28ms1148 KiB
17Hibás válasz0/213ms1564 KiB
18Hibás válasz0/214ms1588 KiB
19Hibás válasz0/263ms5204 KiB
20Hibás válasz0/285ms8284 KiB
21Hibás válasz0/286ms8280 KiB
22Hibás válasz0/282ms7500 KiB
23Hibás válasz0/281ms8016 KiB
24Hibás válasz0/235ms2564 KiB
25Hibás válasz0/248ms4340 KiB
26Hibás válasz0/256ms5652 KiB
27Hibás válasz0/254ms3664 KiB