답안 #29321

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
29321 2017-07-19T02:34:05 Z 서규호(#1166) Meteors (POI11_met) C++14
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
#include <unistd.h>

#define pii pair<int,int>
#define pll pair<lld,lld>
#define pb push_back
#define next nextt
#define left leftt
#define right rightt
#define lld long long
#define Inf 1000000000
#define Mod 1000000007
#define Linf 1000000000000000000LL
#define get gett

using namespace std;

int bsize;
int N,M,K;
int a[300002],need[300002];
int x[300002],y[300002],z[300002];
int cnt[550][300002];

int get(int it,int color){
    int tmp = 0;
    for(int i=1; i<=it; i++) if(color == a[i]) tmp++;
    return tmp;
}

int main(){
    //freopen("input.txt","r",stdin);
    return 0;
	scanf("%d %d",&N,&M);
	for(int i=1; i<=M; i++) scanf("%d",&a[i]);
	for(int i=1; i<=N; i++) scanf("%d",&need[i]);
	scanf("%d",&K); bsize = sqrt(K);
	for(int i=1; i<=K; i++){
		scanf("%d %d %d",&x[i],&y[i],&z[i]);
		if(x[i] <= y[i]){
			cnt[i/bsize][x[i]]+=z[i];
			cnt[i/bsize][y[i]+1]-=z[i];
		}else{
			cnt[i/bsize][1]+=z[i];
			cnt[i/bsize][y[i]+1]-=z[i];
			cnt[i/bsize][x[i]]+=z[i];
		}
	}
	for(int i=1/bsize; i<=K/bsize; i++){
		for(int j=1; j<=M; j++){
			cnt[i][j] += cnt[i][j-1];
			cnt[K/bsize+1][j] = cnt[i][j];
		}
		for(int j=1; j<=N; j++) cnt[i][j] = 0;
		for(int j=1; j<=M; j++){
			cnt[i][a[j]] += cnt[K/bsize+1][j];
			cnt[i][a[j]] = min(cnt[i][a[j]],(lld)Inf);
		}
	}
	for(int i=1; i<=N; i++){
		lld sum = 0;
		int s = 0,e;
		for(int j=1/bsize; j<=K/bsize; j++){
			sum += cnt[j][i];
			if(sum >= need[i]){
				s = max(1,j*bsize);
				e = min((j+1)*bsize-1,K);
				sum -= cnt[j][i];
				break;
			}
		}
		if(s == 0){
			puts("NIE");
			continue;
		}
        for(int j=s; j<=e; j++){
            lld tmp;
            if(x[j] <= y[j]){
                tmp = get(y[j],i)-get(x[j]-1,i);
            }else{
                tmp = get(y[j],i)+get(M,i)-get(x[j]-1,i);
            }
            sum += tmp*z[j];
            if(sum >= need[i]){
                printf("%d\n",j);
                break;
            }
        }
	}

	return 0;
}

Compilation message

met.cpp: In function 'int main()':
met.cpp:56:44: error: no matching function for call to 'min(int&, long long int)'
    cnt[i][a[j]] = min(cnt[i][a[j]],(lld)Inf);
                                            ^
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:56:44: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
    cnt[i][a[j]] = min(cnt[i][a[j]],(lld)Inf);
                                            ^
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:56:44: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
    cnt[i][a[j]] = min(cnt[i][a[j]],(lld)Inf);
                                            ^
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:56:44: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
    cnt[i][a[j]] = min(cnt[i][a[j]],(lld)Inf);
                                            ^
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:56:44: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
    cnt[i][a[j]] = min(cnt[i][a[j]],(lld)Inf);
                                            ^
met.cpp:33:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&N,&M);
                      ^
met.cpp:34:43: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(int i=1; i<=M; i++) scanf("%d",&a[i]);
                                           ^
met.cpp:35:46: 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",&need[i]);
                                              ^
met.cpp:36:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&K); bsize = sqrt(K);
                ^
met.cpp:38:38: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d",&x[i],&y[i],&z[i]);
                                      ^