結果
問題 |
No.3054 Modulo Inequalities
|
ユーザー |
![]() |
提出日時 | 2025-03-07 23:11:52 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,466 bytes |
コンパイル時間 | 4,284 ms |
コンパイル使用メモリ | 251,700 KB |
実行使用メモリ | 8,608 KB |
最終ジャッジ日時 | 2025-03-07 23:12:00 |
合計ジャッジ時間 | 8,053 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 4 WA * 27 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:21:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 21 | scanf("%d %d",&a,&b); | ~~~~~^~~~~~~~~~~~~~~
ソースコード
#include <stdio.h> #include <bits/stdc++.h> #include <atcoder/all> using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000000 #define Inf64 1000000000000000001LL int x[3000],y[3000]; int z[6000]; int main(){ int n; cin>>n; vector<int> imos(1000002); rep(i,n){ int a,b; scanf("%d %d",&a,&b); int ja = 0,jb = 0; for(int j=1;j<=a;j++){ x[ja] = j; ja++; j = a/j; } x[ja] = a+1; ja++; for(int j=1;j<=b;j++){ y[jb] = j; jb++; j = b/j; } y[jb] = b+1; jb++; int jc = 0; int ta = 0,tb = 0; while(ta<ja && tb<jb){ if(x[ta]<y[tb]){ z[jc] = x[ta]; ta++; } else{ z[jc] = y[tb]; tb++; } jc++; } while(ta<ja){ z[jc] = x[ta]; ta++; jc++; } while(tb<jb){ z[jc] = y[tb]; tb++; jc++; } jc--; rep(j,jc){ if(j!=jc-1 && z[j]==z[j+1])continue; int d = b%z[j] - a%z[j]; int aa = -(b/z[j]) + (a/z[j]); if(d>0){ if(aa >= 0)imos[z[j]]++,imos[z[j+1]]--; else{ imos[z[j]]++; imos[min(z[j+1],z[j] + (d-aa-1)/(-aa))]--; } } else{ if(aa>0){ imos[min(z[j+1], (1-d+aa-1)/aa+z[j])]++; imos[z[j+1]]--; } } } if(a<b)imos[b+1]++; } rep(i,imos.size()-1)imos[i+1] += imos[i]; /* rep(i,10){ cout<<i<<' '<<imos[i]<<endl; } */ int ans = 0; rep(i,imos.size()){ if(imos[ans]<imos[i])ans = i; } cout<<ans<<endl; return 0; }