제출 #419788

#제출 시각아이디문제언어결과실행 시간메모리
419788MohamedAhmed04팀들 (IOI15_teams)C++14
0 / 100
947 ms143336 KiB
#include <bits/stdc++.h> #include "teams.h" //#include "grader.cpp" using namespace std ; const int MAX = 5e5 + 10 ; vector<int>tree[4 * MAX] , v[MAX] ; int n ; void build(int node , int l , int r) { if(l == r) { tree[node] = v[l] ; return ; } int mid = (l + r) >> 1 ; build(node << 1 , l , mid) ; build(node << 1 | 1 , mid+1 , r) ; merge(tree[node << 1].begin() , tree[node << 1].end() , tree[node << 1 | 1].begin() , tree[node << 1 | 1].end() , back_inserter(tree[node])) ; } int query(int node , int l , int r , int from , int to , int a , int b) { if(from > r || to < l) return 0 ; if(l >= from && r <= to) { int x = upper_bound(tree[node].begin() , tree[node].end() , b) - tree[node].begin() ; x -= lower_bound(tree[node].begin() , tree[node].end() , a) - tree[node].begin() ; return x ; } int mid = (l + r) >> 1 ; int x = query(node << 1 , l , mid , from , to , a , b) ; int y = query(node << 1 | 1 , mid+1 , r , from , to , a , b) ; return (x + y) ; } void init(int N, int A[], int B[]) { n = N ; for(int i = 0 ; i < n ; ++i) v[A[i]].push_back(B[i]) ; for(int i = 1 ; i <= n ; ++i) sort(v[i].begin() , v[i].end()) ; build(1 , 1 , n) ; } int can(int m, int K[]) { sort(K , K + m) ; long long now = 0 ; for(int i = 0 ; i < m ; ++i) { int to = 1e9 ; if(i+1 < m) to = K[i+1] - 1 ; now += K[i] - query(1 , 1 , n , 1 , K[i] , K[i] , to) ; now = max(now , 0ll) ; } return (now == 0) ; }

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

teams.cpp: In function 'int query(int, int, int, int, int, int, int)':
teams.cpp:32:66: warning: conversion from '__gnu_cxx::__normal_iterator<int*, std::vector<int> >::difference_type' {aka 'long int'} to 'int' may change value [-Wconversion]
   32 |   int x = upper_bound(tree[node].begin() , tree[node].end() , b) - tree[node].begin() ;
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
teams.cpp:33:82: warning: conversion from '__gnu_cxx::__normal_iterator<int*, std::vector<int> >::difference_type' {aka 'long int'} to 'int' may change value [-Wconversion]
   33 |   x -= lower_bound(tree[node].begin() , tree[node].end() , a) - tree[node].begin() ;
      |                                                                                  ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...