結果
問題 |
No.1837 Same but Different
|
ユーザー |
![]() |
提出日時 | 2022-02-11 22:42:32 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,202 bytes |
コンパイル時間 | 556 ms |
コンパイル使用メモリ | 49,792 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-27 20:24:11 |
合計ジャッジ時間 | 3,561 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 3 WA * 20 |
ソースコード
#include <stdio.h> #include <vector> std::vector<int> V1[3],V2; void func(int k, int n, int sum) { for(int i=0;i<n;i++) V1[k].push_back(i), sum -= i; while(sum>0) { int val = sum<n?sum:n; for(int i=n-val;i<n;i++) V1[k][i]++; sum -= val; } } int main() { int a; scanf("%d",&a); if(a<=70) { int S = 0; for(int i=0;i<a-1;i++) S -= i; for(int i=2*a;i<3*a;i++) S += i; for(int i=0;i<a-1;i++) printf("%d ",i); printf("%d\n",S); for(int i=2*a;i<3*a;i++) printf("%d ",i); return 0; } int C1 = a, C2 = a; int L = 500, M = 3500; int sum = 0; for(int i=L;i<L+a;i++) { sum += i; V2.push_back(i); } for(int j=0;j<=a;j++) { int s1 = j, s2 = a-j; if(s1<=L && s2<=10000-2*M) { int t = sum-s2*2*M; int val1 = s1*(s1+1)/2 + s2*(s2+1)/2; int val2 = s1*(2000-s1+1)/2 + s2*(20000-s2+1)/2; if(val1<=t&&t<=val2) { int k1 = s1*(s1+1)/2; int k2 = t - s2*(s2+1)/2; int k3 = k1>k2?k1:k2; func(1,s1,k3); func(2,s2,t-k3); goto u; } } } u:; for(int i=0;i<V1[1].size();i++) printf("%d ",V1[1][i]); for(int i=0;i<V1[2].size();i++) printf("%d ",V1[2][i]+2*M); printf("\n"); for(int i=0;i<V2.size();i++) printf("%d ",V2[i]); }