233452026-01-20 11:16:33abcdIntervallumok (45 pont)cpp17Hibás válasz 0/4571ms5568 KiB
#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;
using ll=long long;

int main(){
    int n;cin>>n;
    vector<int> vec(n+1),pref(n+1),dif(n+1);
    for(int i=1;i<=n;i++){
        int a;cin>>a;
        vec[i]=a;
        dif[i]=a-vec[i-1]-1;
        pref[i]=pref[i-1]+dif[i]+1;
        if(i==1){
            dif[1]=0;
            pref[1]=0;
        }
    }
    dif[0]=INT_MAX;//min(1LL*INT_MAX,1LL*vec[1]-1e9);
    vector<pii> ans;
    vector<vector<int>> starts;
    ans.push_back({1,pref[n]});
    starts.push_back({vec[1]});
    for(int i=2;i*i<=n;i++){
        if(n%i)continue;
        int len=0;
        vector<int> kellmeg(n+1);
        for(int j=i;j<=n;j+=i){
            len=max(len,vec[j]-vec[j-i+1]);
            kellmeg[j]=vec[j]-vec[j-i+1];
        }
        for(int j=i;j<=n;j+=i){
            kellmeg[j]=len-kellmeg[j];
        }
        vector<int> seged=dif,kezdo;
        bool ok=true;
        for(int j=i;j<=n;j+=i){
            int 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||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(int i=0;i<(int)ans.size();i++){
        cout<<ans[i].first<<' '<<ans[i].second<<'\n';
        for(int j:starts[i])cout<<j<<'\n';
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/45
1Elfogadva0/01ms316 KiB
2Hibás válasz0/01ms508 KiB
3Hibás válasz0/11ms500 KiB
4Hibás válasz0/11ms560 KiB
5Hibás válasz0/11ms316 KiB
6Hibás válasz0/14ms564 KiB
7Hibás válasz0/152ms2360 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/234ms2380 KiB
10Hibás válasz0/235ms2632 KiB
11Hibás válasz0/234ms2376 KiB
12Hibás válasz0/235ms2632 KiB
13Hibás válasz0/234ms2372 KiB
14Hibás válasz0/24ms660 KiB
15Hibás válasz0/26ms564 KiB
16Hibás válasz0/28ms828 KiB
17Hibás válasz0/212ms1076 KiB
18Hibás válasz0/212ms1076 KiB
19Hibás válasz0/250ms3004 KiB
20Hibás válasz0/270ms5568 KiB
21Hibás válasz0/271ms5436 KiB
22Hibás válasz0/265ms4988 KiB
23Hibás válasz0/267ms5244 KiB
24Hibás válasz0/237ms1748 KiB
25Hibás válasz0/239ms2824 KiB
26Hibás válasz0/248ms3844 KiB
27Hibás válasz0/259ms2040 KiB