Submission #1308859

#TimeUsernameProblemLanguageResultExecution timeMemory
1308859thuhienneStone Arranging 2 (JOI23_ho_t1)C++20
0 / 100
1 ms576 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define thuhien ""
#define re exit(0);

const int maxn = 200009;

int n,arr[maxn];
pair <int,int> range[maxn];

vector <int> X;

struct seg {
	int l,r,color;
	const bool operator < (const seg & other) const {
		return l < other.l;
	}
	const bool operator > (const seg & other) const {
		return r > other.r;
	}
};

set <seg> freq;
set <seg>::iterator it;

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(nullptr);
	if (fopen(thuhien".inp","r")) {
	   freopen(thuhien".inp","r",stdin);
	   freopen(thuhien".out","w",stdout);
	}

	cin >> n;
	for (int i = 1;i <= n;i++) {
		cin >> arr[i];
		X.push_back(arr[i]);
	}
	
	sort(X.begin(),X.end());
	X.resize(unique(X.begin(),X.end()) - X.begin());
	
	for (int i = 1;i <= n;i++) {
		arr[i] = lower_bound(X.begin(),X.end(),arr[i]) - X.begin() + 1;
	}
	
	for (int i = 1;i <= n;i++) {
		if (!range[arr[i]].first) {
			freq.insert({i,i,arr[i]});
			range[arr[i]] = {i,i};
		} else {
			int l = range[arr[i]].first,r = range[arr[i]].second;
			
			it = freq.find({l,r,arr[i]});
			range[arr[i]] = {it->l,i};
			
			it = freq.erase(it);
			while (it != freq.end()) {
				range[it->color] = {0,0};
				it = freq.erase(it);
			}
			
			freq.insert({range[arr[i]].first,range[arr[i]].second,arr[i]});
		}
	}
	
	for (seg x : freq) {
		for (int i = x.l;i <= x.r;i++) cout << x.color << '\n';
	}
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:33:19: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |            freopen(thuhien".inp","r",stdin);
      |            ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:34:19: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   34 |            freopen(thuhien".out","w",stdout);
      |            ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...