제출 #444302

#제출 시각아이디문제언어결과실행 시간메모리
444302qwerasdfzxcl로봇 (IOI13_robots)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> typedef long long ll; using namespace std; int a[100100], b[100100], cnt[100100], n, x, y; pair<int, int> c[1001000]; bool col[1001000]; struct DSU{ int path[100100], e[100100], h[100100], sz; void init(int n){ sz = n; for (int i=0;i<n;i++) path[i] = e[i] = i, h[i] = 0; } int find(int s){ if (s==path[s]) return s; return path[s] = find(path[s]); } void update(int s){e[s] = s+1;} void merge(int s, int v){ int x = find(s), y = find(v); if (x==y) return; if (h[x]>h[y]) swap(x, y); path[x] = y; e[y] = max(e[x], e[y]); if (h[x]==h[y]) h[y]++; } int _end(int s){ if (s==sz) return s; return e[find(s)]; } }dsu; bool solve(int m){ ///init for (int i=0;i<x;i++) cnt[i] = 0; for (int i=0;i<n;i++) col[i] = 0; dsu.init(n); /// for (int i=0;i<n;i++){ int tmp = dsu._end(c[i].second); //if (m==2) printf("%d\n", tmp); if (tmp==y) continue; cnt[tmp]++; col[i] = 1; if (cnt[tmp]==m){ dsu.update(tmp); if (tmp>0 && cnt[tmp-1]==m) dsu.merge(tmp-1, tmp); if (tmp<x-1 && cnt[tmp+1]==m) dsu.merge(tmp, tmp+1); } } int pt = x-1; for (int i=0;i<y;i++) cnt[i] = 0; for (int i=0;i<n;i++) if (!col[i]){ if (pt<c[i].first) return 0; cnt[pt]++; if (cnt[pt]==m) pt--; } return 1; } int main(){ scanf("%d %d %d", &x, &y, &n); for (int i=0;i<x;i++) scanf("%d", a+i); for (int i=0;i<y;i++) scanf("%d", b+i); sort(a, a+x); sort(b, b+y); for (int i=0;i<n;i++){ scanf("%d %d", &c[i].first, &c[i].second); c[i].first = upper_bound(a, a+x, c[i].first) - a; c[i].second = upper_bound(b, b+y, c[i].second) - b; if (c[i].first==x && c[i].second==y){ printf("-1\n"); return 0; } } sort(c, c+n, greater<pair<int, int>>()); //for (int i=0;i<n;i++) printf(" %d %d\n", c[i].first, c[i].second); int l = 1, r = 1001000, ans = 1001000; while(l<r){ int m = (l+r)>>1; if (solve(m)) r = m, ans = m; else l = m+1; } assert(ans!=1001000); printf("%d\n", ans); return 0; }

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

robots.cpp: In function 'int main()':
robots.cpp:64:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |     scanf("%d %d %d", &x, &y, &n);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
robots.cpp:65:32: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   65 |     for (int i=0;i<x;i++) scanf("%d", a+i);
      |                           ~~~~~^~~~~~~~~~~
robots.cpp:66:32: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   66 |     for (int i=0;i<y;i++) scanf("%d", b+i);
      |                           ~~~~~^~~~~~~~~~~
robots.cpp:69:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   69 |         scanf("%d %d", &c[i].first, &c[i].second);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccrzkwsK.o: in function `main':
robots.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccYLNhEJ.o:grader.c:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccYLNhEJ.o: in function `main':
grader.c:(.text.startup+0x1b1): undefined reference to `putaway'
collect2: error: ld returned 1 exit status