Submission #42327

#TimeUsernameProblemLanguageResultExecution timeMemory
42327milmillinDeda (COCI17_deda)C++14
100 / 140
1065 ms48008 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=200100; 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; }

Compilation message (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...