結果
| 問題 |
No.1972 Modulo Set
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-06-13 21:21:47 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,445 bytes |
| コンパイル時間 | 794 ms |
| コンパイル使用メモリ | 84,200 KB |
| 実行使用メモリ | 13,768 KB |
| 最終ジャッジ日時 | 2024-10-01 09:37:05 |
| 合計ジャッジ時間 | 4,676 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 TLE * 1 -- * 1 |
| other | -- * 34 |
ソースコード
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
#include <tuple>
#include <bitset>
#define rep(i,n) for(i=0; i<n; ++i)
#define in(a) cin >> a
#define out(a,b) cout << a << b
using namespace std;
using lint = long long;
lint count_elem_inc(vector<lint> x, lint elem, lint *i){
lint cnt=0;
for(; *i<x.size(); ++*i){
if(x[*i]!=elem) break;
cnt++;
}
return cnt;
}
lint count_elem_dec(vector<lint> x, lint elem, lint *i){
lint cnt=0;
for(; *i>0; --*i){
if(x[*i]!=elem) break;
cnt++;
}
return cnt;
}
int main(void){
lint i, j;
lint p, n, m;
in(n); in(m);
vector<lint> rem(n);
rep(i,n){
lint input;
in(input);
rem[i]=input%m;
}
lint cnt=n;
sort(rem.begin(),rem.end());
lint *cur_l, *cur_r;
lint init_l=0, init_r=n-1;
cur_l=&init_l; cur_r=&init_r;
if(rem[*cur_l]==0){
cnt-=count_elem_inc(rem, 0, cur_l);
cnt++;
}
for(; rem[*cur_l]<m/2+m%2;){
for(; rem[*cur_r]>m-rem[*cur_l]; --*cur_r);
lint cur_elem=rem[*cur_l];
lint l_cnt=count_elem_inc(rem, cur_elem, cur_l);
lint r_cnt=count_elem_dec(rem, m-cur_elem, cur_r);
cnt-=min(l_cnt,r_cnt);
}
if(m%2==0&&rem[*cur_l]==m/2){
cnt-=count_elem_inc(rem, m/2, cur_l);
cnt++;
}
if(cnt==0) cnt=1;
out(cnt,endl);
return 0;
}