結果
問題 |
No.3297 Bake Cookies
|
ユーザー |
|
提出日時 | 2025-10-05 14:20:31 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 106 ms / 2,000 ms |
コード長 | 3,022 bytes |
コンパイル時間 | 4,449 ms |
コンパイル使用メモリ | 276,068 KB |
実行使用メモリ | 7,716 KB |
最終ジャッジ日時 | 2025-10-05 14:20:53 |
合計ジャッジ時間 | 8,102 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 27 |
ソースコード
//#ifndef ONLINE_JUDGE //#define _GLIBCi_DEBUG //#endif // #pragma GCC optimize("Ofast") // #pragma GCC optimize "O3,omit-frame-pointer,inline" #include <iostream> // cout, endl, cin #include <string> // string, to_string, stoi #include <vector> // vector #include <algorithm> // min, mai, swap, sort, reverse, lower_bound, upper_bound #include <utility> // pair, make_pair #include <tuple> // tuple, make_tuple #include <cstdint> // int64_t, int*_t #include <cstdio> // printf #include <map> // map #include <queue> // queue, priority_queue #include <set> // set #include <stack> // stack #include <deque> // deque #include <unordered_map> // unordered_map #include <unordered_set> // unordered_set #include <bitset> // bitset #include <cctype> // isupper, islower, isdigit, toupper, tolower #include <iomanip> // fiied,setprecision #include <limits.h> // INT_MAi #include <math.h> // M_PI #include <random> // random_device, mt19937, uniform_int_distribution #include <regex> // 正規表現 #include <time.h> // time #include <fstream> // ifstream, ofstream #include <array> // array #include <bit> // bit #include <chrono> // chrono #include <span> // span #include <cmath> // sqrt, sin, cos, tan, asin, acos, atan, atan2 #include <complex> // 複素数 // #include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; // using mint = modint1000000007; using mint = modint998244353; using ll = long long; using ull = unsigned long long; using ld = long double; // 80bit 18桁 #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) const int dx[4] = {-1, 0, 1, 0}; const int dy[4] = {0, 1, 0, -1}; const string DIR = "URDL"; const int dx8[8] = {0, 1, 1, 1, 0, -1, -1, -1}; const int dy8[8] = {1, 1, 0, -1, -1, -1, 0, 1}; // INFに3以上を掛ける、またはint(INF)に1以上を足すとオーバーフローする // 4611686016279904255 cf: LLONG_MAi=9223372036854775807 // const ll INF = (1ll << 62) - (1ll << 31) - 1ll; int main(){ ll n,m,t; cin>>n>>m>>t; vector<ll>a(m); rep(i,m){ cin>>a[i]; a[i]--; } vector<ll>sum_jikan(n,0); ll dai=0; rep(i,m){ sum_jikan[a[i]]++; dai=max(dai,sum_jikan[a[i]]); } ll l=0,r=m; while(r-l>1){ ll mm=(r+l)/2; ll yobun_cnt=0; ll amari=0; rep(j,n){ //cerr<<"j"<<j<<" "<<sum_jikan[j]<<endl; if(sum_jikan[j]>mm){ yobun_cnt=sum_jikan[j]-mm; }else{ amari+=(mm-sum_jikan[j])/t; //cerr<<mm<<" "<<sum_jikan[j]<<" "<< (mm-sum_jikan[j])/t<<endl; } } //cerr<<"mm "<<mm<<" yobun_cnt "<<yobun_cnt<<" amari "<<amari<<endl; if(yobun_cnt>amari){ l=mm; }else { r=mm; } } cout<<r<<endl; }