제출 #831657

#제출 시각아이디문제언어결과실행 시간메모리
831657qin팀들 (IOI15_teams)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#include "teams.h"
using namespace std;
struct st{
		int a, b;
		st(){}
		st(int A, int B) : a(A), b(B) {}
		bool operator <(const st &x) const{return b == x.b ? a < x.a : b < x.b;}
};
int base = 1;
int it = 0;
struct seg{
		vector<int> t;
		void init(int n){
				while(base < n) base <<= 1;
				t.resize(base<<1);
		} void update(int i, int w){
				i += base-1; t[i] = w;
				for(i>>=1; i; i>>=1) t[i] = t[i<<1] + t[i<<1|1];
		} int Find(int i, int pocz, int kon){
				if(pocz == kon) return pocz;
				int ret = 0;
				if(t[i<<1]) ret = Find(i<<1, pocz, (pocz+kon)>>1);
				else ret = Find(i<<1|1, ((pocz+kon)>>1)+1, kon);
				return ret;
		} int findsmallest(){
				if(!t[1]) return 0;
				else return Find(1, 1, base);
		}
};
vector<vector<st>> v;
bool can(int n, int m, int T[]){
		vector<int> t(m);
		for(int i = 0; i < m; ++i) t[i] = T[i];
		int suma = 0;
		for(int i = 0; i < m; ++i) suma += t[i];
		if(suma > n) return 0;
		seg seg;
		seg.init(n);
		int it = 0, tmp;
		sort(t.begin(), t.end());
		bool b = 1;
		for(int i = 1; i <= n; ++i){
				for(st u : v[i]) seg.update(u.a, u.b);
				while(it != m && t[it] == i){
						for(int j = 1; j <= i; ++j){
								if(!seg.t[1]) { b = 0; break; }
								tmp = seg.findsmallest();
								seg.update(tmp, 0);
						} ++it;
				}
		} return b;
}
void init(int n, int A[], int B[]){
		vector<int> a(n+1), b(n+1);
		vector<st> t(n);
		for(int i = 1; i <= n; ++i) a[i] = A[i-1];
		for(int i = 1; i <= n; ++i) b[i] = B[i-1], t[i-1] = st(a[i], b[i]);
		sort(t.begin(), t.end());
		v.resize(n+2);
		for(int i = 0; i < n; ++i) v[t[i].a].emplace_back(i+1, 1), v[t[i].b+1].emplace_back(i+1, 0);
}

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

teams.cpp: In function 'bool can(int, int, int*)':
teams.cpp:40:7: warning: declaration of 'it' shadows a global declaration [-Wshadow]
   40 |   int it = 0, tmp;
      |       ^~
teams.cpp:11:5: note: shadowed declaration is here
   11 | int it = 0;
      |     ^~
/usr/bin/ld: /tmp/cc2Kht9V.o: in function `main':
grader.c:(.text.startup+0x242): undefined reference to `can(int, int*)'
collect2: error: ld returned 1 exit status