제출 #42328

#제출 시각아이디문제언어결과실행 시간메모리
42328milmillinDeda (COCI17_deda)C++14
100 / 140
1071 ms49140 KiB
#include <cstdio>
#include <algorithm>
#include <set>
#include <map>
#include <vector>

using namespace std;

set<int> bit[200100];
map<int,int> comp;

struct query {
	char x;
	int a,b;
};

int mxx;

void update (int idx,int val) {
	while (idx<mxx) {
		bit[idx].insert(val);
		//printf("++ %d\n",idx);
		//for (auto &i:bit[idx]) {
			//printf("%d ",i);
		//}
		//printf("\n");
		idx+=(idx&-idx);
	}
}

int get (int idx,int val) {
	int ans=2e9;
	while (idx) {
		auto it = bit[idx].lower_bound(val);
		//printf("## %d\n",idx);
		//for (auto &i:bit[idx]) {
			//printf("%d ",i);
		//}
		//printf("\n");
		if (it!=bit[idx].end()) {
			//printf("*** %d\n",*it);
			ans = min(ans,*it);
		}
		idx-=(idx&-idx);
	}
	return ans;
}

int main () {
	int n,q;
	scanf("%d%d",&n,&q);
	mxx=q+1000;
	char x;
	int a,b;
	vector<query> qq;
	for (int i=0;i<q;i++) {
		scanf(" %c%d%d",&x,&a,&b);
		comp[a];
		qq.push_back(query{x,a,b});
	}
	int cnt=1;
	for (auto &i:comp) {
		i.second = cnt++;
	}
	for (auto &i:qq) {
		i.a=comp[i.a];
		//printf("-- %d %d\n",i.a,i.b);
		if (i.x=='M') {
			update(i.a,i.b);
		} else {
			int tmp = get(i.a,i.b);
			printf("%d\n",(tmp==2e9)?-1:tmp);
		}
	}
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

deda.cpp: In function 'int main()':
deda.cpp:51:21: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&q);
                     ^
deda.cpp:57:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %c%d%d",&x,&a,&b);
                            ^
#Verdict Execution timeMemoryGrader output
Fetching results...