답안 #41308

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
41308 2018-02-15T21:05:49 Z wzy Meteors (POI11_met) C++14
컴파일 오류
0 ms 0 KB
    #include <bits/stdc++.h>
    using namespace std;
    #define F first
    #define S second
    #define pii pair<int,int>
    #define pb push_back
    int n ,m , k , ans[300005] , qt[300005]  , l[300005] , r[300005] ;
    long long bit[300005];
    vector<int> own[300005];
    vector<int> sweep[300005];
    pair<pii , unsigned int> querys[300005];
     
    void upd(int x , int v){
    	for(int i = x ; i < 300005; i += (i&-i)){
    		bit[i] += v;
    	}
    	return;
    }
     
    long long gt(int x){
    	int s = 0;
    	for(int i = x ; i > 0 ; i -=(i&-i)){
    		s+= bit[i];
    	}
    	return s;
    }
     
     
     
    void update(int l , int r , int v){
    	if(l <= r){
    		upd(l , v);
    		upd(r + 1 , -v);
    	}
    	else{
    		upd(l , v);
    		upd(1 , v);
    		upd(r + 1 , -v);
    	}
    	return;
    }
     
    long long query(int x){
    	return gt(x);
    }
     
    int main(){
    	scanf("%d%d" , &n , &m);
    	for(int i = 1 ; i <= m;i++){
    		int x;
    		scanf("%d" , &x);
    		own[x].pb(i);
    	}
    	for(int i = 1 ; i  <= n;i++) scanf("%d" , &qt[i]);
    	scanf("%d" , &k);
    	for(int i = 1 ; i <= k ; i++){
    		scanf("%d%d%d" , &querys[i].F.F , &querys[i].F.S , &querys[i].S);
    	}
    	for(int i = 1 ; i <= n;i++) l[i] = 1 , r[i] = k , ans[i] = -1;
    	while(true){
    		bool cabou = true;
    		for(int i = 1 ; i <= n; i++){
    			if(l[i] <= r[i]){
    				sweep[(l[i] + r[i])/2].pb(i);
    				cabou = false;
    			}
    		}
    		if(cabou) break;
    		for(int i = 1 ; i <= m + 1 ; i++) bit[i] = 0;
    		for(int i = 1 ; i <= k ; i++){
    			update(querys[i].F.F , querys[i].F.S , querys[i].S);
    			while(sweep[i].size()){
    				int u = sweep[i].back();
    				sweep[i].pop_back();
    				long long sj = 0;
    				bool deu = false;
    				for(int w = 0 ;  w < own[u].size() ; w++){
    					int v = own[u][w];
    					sj += query(v);
    					sj = min(sj , 1000000009);
    					if(sj >= qt[u]){
    						deu = true;
    						break;
    					}
    				}
    				if(deu){
    					if(l[u] == r[u]) ans[u] = i , r[u] = -1;
    					else r[u] = i;
    				}
    				else{
    					if(l[u] == r[u]) r[u] = -1;
    					else l[u] = i + 1;
    				}
    			}
    		}
    	}
    	for(int i = 1 ; i <= n; i++){
    		if(ans[i] == -1) puts("NIE");
    		else printf("%d\n" , ans[i] );
    	}
     
    }

Compilation message

met.cpp: In function 'int main()':
met.cpp:77:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int w = 0 ;  w < own[u].size() ; w++){
                            ^
met.cpp:80:34: error: no matching function for call to 'min(long long int&, int)'
          sj = min(sj , 1000000009);
                                  ^
In file included from /usr/include/c++/5/bits/char_traits.h:39:0,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from /usr/include/c++/5/ccomplex:38,
                 from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:52,
                 from met.cpp:1:
/usr/include/c++/5/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^
/usr/include/c++/5/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
met.cpp:80:34: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
          sj = min(sj , 1000000009);
                                  ^
In file included from /usr/include/c++/5/bits/char_traits.h:39:0,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from /usr/include/c++/5/ccomplex:38,
                 from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:52,
                 from met.cpp:1:
/usr/include/c++/5/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^
/usr/include/c++/5/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
met.cpp:80:34: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
          sj = min(sj , 1000000009);
                                  ^
In file included from /usr/include/c++/5/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:64,
                 from met.cpp:1:
/usr/include/c++/5/bits/stl_algo.h:3445:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
     min(initializer_list<_Tp> __l)
     ^
/usr/include/c++/5/bits/stl_algo.h:3445:5: note:   template argument deduction/substitution failed:
met.cpp:80:34: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
          sj = min(sj , 1000000009);
                                  ^
In file included from /usr/include/c++/5/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:64,
                 from met.cpp:1:
/usr/include/c++/5/bits/stl_algo.h:3451:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^
/usr/include/c++/5/bits/stl_algo.h:3451:5: note:   template argument deduction/substitution failed:
met.cpp:80:34: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
          sj = min(sj , 1000000009);
                                  ^
met.cpp:48:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
      scanf("%d%d" , &n , &m);
                             ^
met.cpp:51:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
       scanf("%d" , &x);
                       ^
met.cpp:54:55: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
      for(int i = 1 ; i  <= n;i++) scanf("%d" , &qt[i]);
                                                       ^
met.cpp:55:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
      scanf("%d" , &k);
                      ^
met.cpp:57:71: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
       scanf("%d%d%d" , &querys[i].F.F , &querys[i].F.S , &querys[i].S);
                                                                       ^