結果

問題 No.3184 Make Same
ユーザー Ponzu
提出日時 2025-06-21 10:23:19
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 345 ms / 2,000 ms
コード長 581 bytes
コンパイル時間 1,218 ms
コンパイル使用メモリ 123,804 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2025-06-21 10:23:35
合計ジャッジ時間 14,651 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 24
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<iostream>
#include<vector>
#include<algorithm>
#include<ranges>
using namespace std;

int main(){
	int n;cin>>n;
	vector<int>a(n);
	for(int i=0;i<n;++i)cin>>a[i];

	vector<vector<int>> ans;
	for(int bit=29;bit>=0;--bit){
		int s = 0;
		int e = -1;
		for(int i=0;i<n;++i){
			if(1<<bit&a[i]){
				break;
			}
			e = i;
		}
		for(int i=s;i<=e;++i){
			a[i] |= 1<<bit;
		}
		if(e!=-1){
			ans.emplace_back(vector<int>{s+1,e+1,(1<<bit)});
		}
		ranges::sort(a);
	}

	cout << ans.size() << endl;
	for(auto v : ans){
		for(int s:v){
			cout << s << ' ';
		}
		cout << endl;
	}
}
0