제출 #869571

#제출 시각아이디문제언어결과실행 시간메모리
869571alexddNice sequence (IZhO18_sequence)C++17
15 / 100
2059 ms1116 KiB
#include<bits/stdc++.h> using namespace std; int rez[1000005]; int krez; const int INF = 1e9; /** n = 4 m = 11 1 1 1 -4 1 1 1 -4 1 2 */ void solve(int n, int m) { if(n==3 && m==4) { while(1) n=1; return; } if(n==m) { krez=n-1; for(int i=1;i<n;i++) rez[i]=1; return; } if(m%n==0) { krez=m-1; for(int i=1;i<m;i++) rez[i]=-1; return; } if(n==2) { krez=m; for(int i=1;i<=m;i++) { if(i%2==1) rez[i]=INF/2; else rez[i]=-(INF/2+1); } return; } while(m%n!=n-1) m++; krez=m; int ult=n; int val=(INF-1)/(n-1); for(int i=n;i<=m;i+=n) { for(int j=i-n+1;j<i;j++) rez[j]=val; rez[i]=-(n-1)*val-1; ult=i; } for(int j=ult+1;j<=m;j++) rez[j]=val; } signed main() { //ios_base::sync_with_stdio(0);cin.tie(0); int t; cin>>t; while(t--) { int n,m; cin>>n>>m; bool bl=0; if(n>m) { swap(n,m); bl=1; } solve(n,m); cout<<krez<<"\n"; for(int i=1;i<=krez;i++) { if(!bl) cout<<rez[i]<<" "; else cout<<-rez[i]<<" "; } cout<<"\n"; } return 0; } /** pref[i] - pref[i-n] < 0 pref[i] - pref[i-m] > 0 pref[i-n] > pref[i] pref[i-m] < pref[i] n = 4 m = 11 1 1 1 -4 1 1 1 -4 1 1 1 -4 1 1 1 n = 3 m = 8 3 3 -7 3 3 -7 3 3 -7 m - 2 * m/n > 0 n = 2 m = 11 5 -6 5 -6 5 -6 5 499999999 999999999 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...